簡體   English   中英

以下代碼的輸出背后的邏輯是什么?

[英]What is logic behind the output of following code?

我執行了以下代碼:

int a[] = {5,1,15,20,25};
int i,j,m;
i = ++a[1];
j = a[1]++;
m = a[i++];
printf("%d %d %d",i,j,m);

我得到的輸出如下:

3 2 15

我不明白的是我如何得到的價值i作為3

應該是2對吧?

還是與C編譯器從右到左評估printf()語句有關?

m = a[i++]行第二次將i從2遞增到3。

什么是a[1] 是1.什么是++a[1] 現在是2。 i現在是2,到目前為止一切都很好。

但是,當您計算m ,您有a[i++]; i現在是3(請注意, m將為a[2] i 求值遞增)。

i = ++a[1];

預遞增運算符。 a[1]變為2,然后i變為2;

j = a[1]++;

增后運算符。 j變成2,然后a[1]變成3。

m = a[i++];

后增量運算符。 m變成a[2] = 15,然后i變成3。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM