无论先执行哪个,都不会影响结果 ,当然实际上是先对i++求值得i,然后计算a+i
关键你不能把i++看作i在做自增操作,它仅仅是个表达式而已返回i当前的值。
a+(i++)就是先求a+i; 然后i=i+1;
这样的,a+(i++),这个式子里面()优先级最大,先算括号里面的值(i++)
假设此时a和i的值都为1
因为是i++(后赋值),所以(i++)的值为1,括号算完之后,i的值变为2
最后的值为a+(1) 为2,此时a=1,i=2
总结就是:
先算括号内
括号内算完后算++(因为++在i后面)
算a + ()
C语言中,a+(i++);是先执行圆括号中的表达式i++,该表达式的值就是i原来的值,然后再加上a
所以,a+(i++)表达式的结果相当于a+i
x=a+(i++);相当于这个的缩写:x=a+i; i++;
x=a+(++i);则相当于:i++; x=a+i;
先执行 i++ 先算括号里的