[英]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.