C语言中a=1,a=a+++1,a+++1这两个有什么区别,前者值是3,后者是2

如题所述

a=a+++1:先a++,a变为2
(即这个a++完了以后,a已经变成了2),然后开始2+1,然后再将2+1赋给a;
而a+++1:则是先a++,即a变成了2,然后加1,因为加1后并没有赋值给回a,所以a还是2
a++其实差不多是a=a+1的缩写,这样的a自增会赋值给回自己
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-11
事实证明。。如果a都等于1的情况下。都是2,
如果顺序执行,那么前面是2,后面是3
顺序大概是a=1+1,此时a被使用,所以a++此时a=2,但是1+1又给a赋值2,所以a=2;
++先执行是因为优先级大于=,作者题目都是错的,然而底下一堆在为了错的答案找解释,自己试试就知道了
第2个回答  2019-06-21
a=3时,
因为a++是变量a先参与其他运算再加1,所以(a++)+(a++)+(a++)实际上是3+3+3=9,运算后a的值是6.
++a则是先求a=a+1,然后再做其他运算,所以(++a)+(++a)+(++a)实际上是5+5+6=16,运算后a的值是6.
第3个回答  2020-06-28
前者,a=a+++1被编译器解释为:
a=a+1;//a=1+1=2
a++;//a=2+1=3
后者,a+++1被编译器解释为:
a+1;//虽然做了1+1=2运算,但没有赋给a,a仍为1
a=a+1;//a=1+1=2
相似回答