总结:
因为无论是运算还是输出,当需要a++返回结果时,a++返回的是加1以前的值,++a返回的是加1之后的值,
例:
main()
{
int a = 3, b = 6;
❶ printf("%d", a++);
❷ printf("%d\n", 2*(b-'0'));
}
在此程序中❶printf("")中的运算过程是,a++将返回值a(整数3)返回给printf,输出在%d的位置上,然后才+1=4,于是a = 4(整数)若之后下一行加上一个"printf("%d", a++)(a又会先返回4,再+1=5);" 或"printf("%d", a);",那么输出值就是 4; 若此处改为++a,则运算过程为(a = a + 1),先是a+1 = 4,于是++a的返回值便是4,然后输出在%d的位置上。
当运算时也是如此:
例:
{
int a = 1;
int b = 1;
int n;
int m ;
n = a++;
m = ++b;
}
因为a++是先返回结果再加1,因此经过n = a++;运算之后n的值为1,然后a返回值1之后才+1=2,经过m = ++bb ;先进行+1=2后再返回结果2 ,运算之后m的值为2