a-=b
其功能等效于
a = a-b
所以
a-=a-5会先计算a-5的值,再用a值减去这个值,最终赋值给a。
即
a-=a-5等效于
a= a-(a-5)
在a=1时,计算结果为
a = 1-(1-5) = 1-(-4) =5
事实上,从数学运算可以得出,
a-=a-5 = a-(a-5)= a-a+5=5
也就是这个表达式计算后,a的值是恒为5的。
在C语言中a-=b+c应该是a=a-(b+c)
-=的意思:
1、 -=是C语言中的一个复合运算符。
2、 -=为双目运算, 形式为:A-=B表示含义为:A=A-B
C语言中复合赋值运算符 :
1、<<= 的意思是左移等。a<<=b其实就是a=a<<b.
2、 >>= 的意思是右移等。a>>=b其实就是a=a>>b.
3、&= 的意思是与等。a&=b其实就是a=a&b.
a-1和1-a是正确的表达方式。第一个的表达方式不正确,一般在c语言中没有这种表达方式,第二个和第三个是普通的数学表达式,可以在c语言中表达。