1、num = (++ i) + (++i) + (++i) + (++i);
計算順序:
i= i + 1 ---->i = 3
i= i + 1 ---->i = 4
num = i + i ---->num = 4 + 4 = 8
i = i + 1 ---->i = 5
num = num + i ---->num = 8 + 5 = 13
i = i + 1 ---->i = 6
num = num + i; --->num = 13 + 6 = 19
2、i= i *((i ++) + (++i))
計算順序:
由於括號中i++一開始不要自加,所以先算++i
++i ---->i = 3
(i++) + (++i) = 3 + 3 = 6
i * ((i++) + (++i)) = 3 * 6 = 18
i +1=19
3、num = (i++) + (++i) + (i++) + (++i)
計算順序:
num = (i++) + (++i) ---->num = 3 + 3 = 6(先算++i,i= 3,然後再算num = (i++) + (++i))
num = num + (i ++)= 6 + 3 = 9
num = num + (++i) = 9 + 4 = 13
num = 13 + 1 + 1=15(遇到逗號結束,調用之前的i++進行兩次自加)
4、void func(int m,int n)
{
printf("m = %d",m);
printf("m = %d",n);
}
int main()
{
int i = 2;
func(i ++,++i);
return 0;
}
***************************************************
函數調用自加時候的作用規則:
1>函數從右邊開始傳遞參數2>i++被替換爲數值,++i被替換爲變量名
3>分號、函數調用左邊的括號、逗號都爲結束標誌
***************************************************
計算順序:
++i ---->i作爲變量不進行值傳遞,只是進行自加,i= 3
++i ---->i作爲變量不進行值傳遞,只是進行自加,i= 4
輸出4,4
5、程序修改爲:func(i ++,i ++)
計算順序:
i先作爲值傳遞到函數中輸出2
然後遇到逗號,即結束標誌,i自加變爲3,
i作爲值傳遞到函數中輸出3
i再自加變爲4
6、再修改爲:func(i++,i,++i,i++)
計算順序:
i先作爲值傳遞值函數,輸出2
i遇到逗號自加,i的值變爲3
i先自加變爲4,不過是以變量的形式存在,不傳遞值函數輸出
i作爲一個變量不輸出,此時i的值爲4
i作爲值的形式輸出,輸出爲4,而後i的值自加變爲5