C語言中printf中自增自減問題

2021-09-29 10:48:06 字數 905 閱讀 5827

1) printf函式對於括號內的表示式是從右向左執行,如 printf("%d,%d",i++,++i);先執行 ++i,再執行i++;

從左向右輸出。

2) 對於++i和i++:

++i是先自加,再呼叫;

i++是先呼叫,再自加。

**1

#include void main()

結果:

22,22

21,22

21,20

22,20

分析:printf語句1:先執行右邊++c,先自增此時c=21,再呼叫,而此時cpu並沒有到呼叫它的時候,printf第二個格式化的值對應的數字現在還不確定;

再執行左邊++c,先自增此時c=22,再呼叫,此時輸出c的值22;

接著再輸出第二個,因為cpu沒有記住對第二的呼叫,他會找當前b的值,當前b的值是22,所以輸出22,22。

printf語句2:先執行++a,此時a=21(此時不儲存輸出值);

再執行a++時,因為先呼叫,所以輸出a的值為21,a再自增,此時a=22;

再輸出a的值為22

printf語句3:先執行右邊的b++,先輸出b的值為20,b再自增,此時b=21;

再執行左邊的b++,先輸出b的值為21,b再自增。

因此結果從左至右輸出:21,20

printf語句4:同理。

**1

#include void main()

輸出

0,1,0

**2

#include void main()

輸出

2,1,2,2,2,2

C語言自增自減

i,i 使用i之前,先使i的值加 減 1。i i 使用i之後,再使i的值加 減 1。其中 i和i 的作用相當於i i 1。但是 i和i 不同之處在於 i是先執行i i 1後,再使用i的值 而i 是先使用i的值後,再執行i i 1。例如 i 6a i i的值先變成7,再賦值給a,a的值才為7 b i ...

C語言中自增自減的編譯原理

i 與 i 的主要區別有兩個 1 i 返回原來的值,i 返回加1後的值。2 i 不能作為左值,而 i 可以。毫無疑問大家都知道第一點 不清楚的看下下面的實現 就了然了 我們重點說下第二點。首先解釋下什麼是左值 以下兩段引用自中文維基百科 右值引用 詞條 左值是對應記憶體中有確定儲存位址的物件的表示式...

C語言 自增( ) 自減( )運算

1.作用 自增運算使單個變數的值增 自減運算使單個變數的值減 2.用法與運算規則 自增 自減運算子都有兩種用法 1 前置運算 運算子放在變數之前 變數 變數 先使變數的值增 或減 然後再以變化後的值參與其它運算,即先增減 後運算。2 後置運算 運算子放在變數之後 變數 變數 變數先參與其它運算,然後...