C語言printf函式輸出表達式中的計算順序
阿新 • • 發佈:2019-01-04
看下面一個例子:
#include <stdio.h>
main()
{
int i=8;
printf%d, %d, %d, %d\n",i,--i,i,i--);
}
執行結果:7, 7, 8, 8
為什麼會有這樣的結果呢?這就涉及到自增、自減運算子的問題了。
++i i自增1後再參與其它運算。
--i i自減1後再參與其它運算。
i++ i參與運算後,i的值再自增1。
i-- i參與運算後,i的值再自減1。
在printf()函式中,i++,i-- 時,i的值是在printf()函式之後才會被重新整理,所以在printf() 函式中,i++,i-- 對i的值暫時不產生影響,而++i、--i會有影響。
再看一個例子加深理解:
#include <stdio.h>
main()
{
int i=8;
printf("%d, %d, %d, %d, %d, %d\n",i++,i++,i++,i++,i++,i++);
printf("%d\n\n",i);
i=8;
printf("%d, %d, %d, %d, %d, %d\n",++i,++i,++i,++i,++i,++i);
printf("%d\n",i);
}
執行結果:
8, 8, 8, 8, 8, 8
14
14, 13, 12, 11, 10, 9
14
Press any key to continue
另外,雖然printf()函式是從右往左計算表示式的,但輸出時是從左往右輸出的。