所以等价于:int
y=(++a)+(a++)+(a++)
前置++,先加1后返回值。
后置++,先返回值后加1。
(++a)=1(执行完后,此时a的值为1)
然后a++,先返回a的值,所以(++a)+(a++)=2(执行完后,此时a的值为2)。
所以(++a)+(a++)+(a++)=4(执行完后,此时a的值为3)
++是自增运算符,++k或k++都是让变量k的值加1;--是自减运算符,-
-k或k-
-都是让变量k减1。运算符位于操作数之前,称为前置运算符;运算符位于操作数之后,称为后置运算符。
这两种运算符的差异是:前置运算符是对变量先递增(递减),然后参与其他运算,即先改变变量的值后使用;后置运算符则是变量先参与其他运算,后对变量递增(递减),即先使用后改变。
比如:int
a=9
b=a++(b=9a=10)
b=++a(b=10a=10)
对于你的这道题来说,++i和i++都是一样的;因为都是改变i的值。
还有,printf("%d\n",sum)少写了一个“”,应该是printf("%d\n",sum)
希望对你有所帮助!
因为这依赖于具体的编译软件,不同的便衣软件有不同的自己的规定,而用户却往往被蒙在鼓里。即使用户自己搞清楚了某一种变音软件的运算规则,但是确实的编写好的程序缺少了可移植性,和可读性。如果拿到别的编译软件上进行编译,就会得出不同的结果,所以说像这种有歧义的语句,最好的办法是敬而远之,把它拆分为两个语句或多个语句就可以了。