問題: x=1;
y=2;
printf("%d",x+y,x++,y++);
輸出結果為什么是5?
首先解釋一點,x+y,x++,y++是逗號表達式,逗號表達式的結果是最后一個表達式的結果。
但是在這里printf()函數是從左往右讀取,然后將先讀取放到棧底,最后讀取的放在棧頂,處理時候是從棧頂開始的,所以我們看見的結果是,從右邊開始處理的。
讀取入棧: 處理計算:
壓棧 處理
↑ ↓
順序讀取壓棧 處理時從棧頂讀取:依次為
y++、x++、x+y
↓ ↓ ↓
y=2 x=3 x+y=5
↓ 將計算的結果輸出