第5个回答 2019-08-12
这种运算没有实用价值,写式子的人不知道自己要做什么运算,编译器也不懂要做什么运算,可以胡乱解释。
a+=a-=a*a++
式子里的
a++
是后加加,表达式里数值不变,出表达式后增
1。
所以式子变:a+=a-=a*a
(出表达式后增
1:
a=a+1)
运算先后次序用括号标出:
a+=(a-=(a*a));
a=6
进入,
a*a
得
36
a-=(a*a)
处理成
a
=
6
-
(6*6)
=
-30.
a+=(a-=(a*a));
简化为
a+=a;
a=
-30
-30
得
a
=
-60.
前面说好了,出表达式后增
1:
a=a+1
=
-60
+
1
=
-59
int
a=6;
a+=a-=a*a++;
printf("%d",a);
//
打印出
-59
--------------------------------
int
a=6;
printf("%d",a+=a-=a*a++);
a++
是后加加,表达式里数值不变,
打印出
-60