1, a++ Use a's value then increase a's value.2, ++a Increase a's value then use the new value.int a = 2; int b = a + 3 * a++;----------------------------- int b = 2 + 3 * 2; a++; ==> b = 8; a = 3;
i++ 先取后加int a=2; int b=a+3*a++; 等同于 int a=2; int b=a+3*a; a=a+1;
Use a's value then increase a's value.2, ++a
Increase a's value then use the new value.int a = 2;
int b = a + 3 * a++;-----------------------------
int b = 2 + 3 * 2; a++;
==> b = 8; a = 3;
先取后加int a=2;
int b=a+3*a++;
等同于
int a=2;
int b=a+3*a;
a=a+1;
i++ 先把i参与运算,然后再加1
++i 先把i的值加1,然后再参与运行.int b=a+3*a++,后面的a加1是不是要等所有的都运算完之后再加1?
看看你的问题int b=a+3*a++;
首先先将a进栈 即是2进栈 再加号进栈 ,依次都进栈后,
a再出栈,*出栈,3出栈,做a*3的运算 得6 。后6进栈。 a自加,但是并不能影响栈里a的值啊
栈里的a还是2。 再6,+,2 都出栈。做6+2 得8 即是结果了。
你可以按照这个思想自己算算 int b=3*a++ + a;
结果就是9。因为 第二个a的值还没有进栈时 第一个a++ 就已经将a变为3了。