1. 程式人生 > >C語言printf函式輸出表達式中的計算順序

C語言printf函式輸出表達式中的計算順序

看下面一個例子:

#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()函式是從右往左計算表示式的,但輸出時是從左往右輸出的。