a=2;
执行这条语句后t的值为多少?为何?
t=a+++(++a)+a++;
t是10
a++ 是先返回原本的值, 再对a加1
++a 是先对a加1 再返回加1后的值
a+++(++a)+a++
先计算最前面的a++ 先返回原本的值2, 再对a加1,a变成3
表达式变成 2+(++a)+a++
再计算(++a) 是先对a加1 ,a变成4, 再返回加1后的值4
表达式变成 2+4+a++
最后计算最后面的a++ 先返回原本的值4, 再对a加1,a变成5
表达式变成 2+4+4 = 10
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
C/C++语言标准里没有规定操作数的计算顺序,所以上面代码在不同编译器上得到的结果可能不一样,以后不要写这种代码。
https://en.cppreference.com/w/cpp/language/eval_order
,后➕➕赋值再运算。前➕➕运算再赋值。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!