一个c程序

来源:百度知道 编辑:UC知道 时间:2024/05/04 06:43:50
很简单的一个,就是发现不了原因,拜托请教:
int a=12
int b;
b=a+=a-=a*=a;
printf("b=%d",b);
b的值为什么是0?
恳求高手指教。

我不会,坦白说,不提倡写这种语句,写出来难理解,还容易被不同的编译器弄出不同的结果来,实际中,多些几排,编译器不会找人说累!

b=-264

。。。
因为中间有一个a-=a
,不管怎么样样,a-a肯定是0

a=a*a;
a=a-a*a;
a=a+(a-a*a);
b=a;
按道理来说,似乎不应该是0

。。。
结合方向自右向左:
b=(a+=(a-=(a*=a)));
a*=a;//a=12*12=144
a-=a;//a=144-144=0
a+=a;//a=0+0=0;
b=a;/b=0;
自己分析一下吧