C语言中,int a=6.执行a+=a-=a*a++,a的值为多少?

如题所述

-59
根据优先级。
首先进行a++,这句要求先使用a在加加。因此a*a++=6*6=36
然后是a-=36相当于a=a-36=6-36=-30
然后是a+=-30相当于a=a-30=-30-30=-60
最后a++就是-59了
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-30
#include<iostream.h>
void main()
{
int a=6;
a+=a-=a*a++;
cout<<a;
}

结果为-59

参考资料:个人拙见。

第2个回答  2009-03-30
不知道在哪本书上到的:纠缠于这种问题上面是没有任何实际意义的,平时没人会这么写,只有在“国际混乱代码大赛”中可能会有人使用。
第3个回答  2009-03-31
不要研究这些垃圾玩意儿,
公司从来不用这些。

或许是授课老师想炫耀自己的基础是多么多么厉害
纯粹是花架子
第4个回答  2009-03-31
java,c++和c里面的结果好像不一样?
一次-24,-59,-70。不知道怎么来的。
我运行之前,自己计算为-62。
第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
相似回答