C语言的一个计算 高手来讨论!!!急`````````````````````

来源:百度知道 编辑:UC知道 时间:2024/09/21 08:20:22
#include<stdio.h>
main()
{
int n =2;
n+=n-=n*n;
printf("n=%d\n",n);
}
+= 跟-= 优先级不是一样的吗 应该从左到右计算吧 乘 的话是先算的 不过算好了放在那
然后 n+=n 此时n=4 然后n-4 此时n=0 不是应该这样吗

'='是从右到左运算的 也就是说 先算n*n的值 等于4
然后将n-4赋给n n此时等于了-2
再将n+(-2)的值赋给n 此时就是最后结果 n=-4

n+=n-=n*n; 先从最右边开始,n-=2*2=4,此时n的值还是2,n=n-4=2-4=-2,n的值为-2了,n+= -2 , n = n-2 = -2 - 2 = -4,看的懂吧?

1、先进行n-=n*n, 即 n=n-n*n=2-2*2=-2;
2、再进行n+=-2,即n=n+(-2)=-2-2=-4.

n+=n-=n*n;等价于n+=(n-=(n*n));
1.先计算n*n,上式变为:n+=(n-=4); 这时n=2;
2.赋值运算n-=4,变为:n+=(-2); 这时n=-2;
3.赋值运算n+=-2,这时n=-4。
所以结果是n=-4.