C 語言中的printf()多參數輸出問題


問題:  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

                                                                                                         ↓                                                                                                            將計算的結果輸出

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM