C語言printf中的自增自減執行
阿新 • • 發佈:2018-11-12
源程式
int main()
{
int i = 0;
printf("%d,%d,%d\n",i++,--i,i++);
return 0;
}
我們預期的結果應該是:0,0,0
但實際結果為:0,1,0
原理我也弄得不是很明白,我借鑑了幾篇文章,理解到了計算的方法。
大家都知道printf裡面的計算是從右至左的,輸出是從左至右。先運算這些i++,--i,i++等之類的計算。
我現在來講講剛才那個計算吧,第一步,i++(運算子號在變數後面的,就是輸出計算時變數的值,這裡輸出i,所以輸出0。),計算過後i=1。第二步,--i(運算子號在變數前面的,在這裡輸出i的最終值
簡單來說,先算後用的,輸出最終的變數值。先用後算的,輸出當時的變數值。
驗證程式碼
通過以上的方法計算,得出的結果和運算結果一致。
#include<stdio.h> int main() { int i; // EX1 i = 1; printf("%d %d %d %d %d %d\n",i,i++,i,--i,++i,i); fflush(stdout); printf("%d\n",i); fflush(stdout); //EX2 i = 1; printf("%d %d %d %d %d %d %d\n",i,i++,i++,i,--i,++i,i); fflush(stdout); printf("%d\n",i); fflush(stdout); //EX3 i = 1; printf("%d %d %d %d %d %d\n",i,i--,i,--i,++i,i); fflush(stdout); printf("%d\n",i); return 0; }
執行結果