C语言运算求解 超级低级

来源:百度知道 编辑:UC知道 时间:2024/06/20 04:38:01
main()
{
int a=9;
a+=a-=a+a;
printf("%d\n",a);
}

运算结果为什么事-18 而不是9呢?

因为运算符的次序运算:
a+=a-=a+a
首先从右开始计算也就是计算a-=a+a
也就是 a=a—(a+a) 此时a的值为-9
继续计算a+=a
也就是 a=a+a
因为上次运算后a的值为-9
所以经过这次计算后 a的值为-18

a+=a-=a+a
a+a=18这时a不变仍为9
a-=18=-9
a+=a相当于a=a+a=-9-9=-18

从右边可是算嘛
m=a+a m=18
a=a-m a=-9
a=a+a a=-18

a+a=18
a-=18 a=-9;
a+=-9
所以a=-18;