C语言,若变量a为5,则a+=a-=a=a*a的值为?要过程

来源:百度知道 编辑:UC知道 时间:2024/05/26 06:01:13
我算了也是0,但答案是-40。a+=a-=a*=a 这条就永远都是0,这两条应该不一样。

a+=a-=a=a*a
a=a*a 5*5=25
a-=a 25-25=0
a+=a 0+0=0
无论取多少,最后结果都是0

这里有4个运算符,弄清他们的优先级和结合性就好了。首先,算术运算符*优先于赋值运算符+=,-=,=,所以先计算*法,再是赋值(a+=a-=a=25);三个赋值是同级的,那就看结合性,赋值运算符是自右向左结合的,所以从右往左。
第一步: a=25;
第二步: a-=a; a=a-a=25-25=0;
第三步: a+=a; a=a+a=0+0;
所以最后的结果是0;要注意的就是:a*a这是个算术运算,不会改变a的值,但是其余三个赋值运算都会改变a的值。

得到最后a的值是0;

四则运算
右结合性

本来就是0嘛
结合方向右右向左
a=5
a*=a=25;
a-=(a*=a)=25-25=0;
a+=(a-=(a*=a))=0+0=0;

a=25;
a-=a; a=a-a=25-25=0;
a+=a; a=a+a=0+0;

a+=a-=a=a*a
a-=a*a=>a=a-a*a=5-5*5=-20
a+=a+a=-20-20=-40