標籤:

c++primer練習中的someValue?++x,++y:--x,--y該怎麼理解?


首先,你要清楚,逗號的優先順序最低,所以:

someValue ? ++x, ++y : --x, --y

等於:

(someValue ? ++x, ++y : --x), --y

然後,你再看,如果 someValue 為真,那麼 y 先自加後自減,還是自己。如果 someValue 為假,那麼 y 僅僅自減。你可以發現,最終的輸出和 x 的值一點關係都沒有

等價於:

someValue ? y : --y;

所以按你寫的程序,最後輸出 y 的值, 為 2.

--------------------------------------------------------------------------------------------------------------------------------------------

這個解釋我曾經寫過: Cpp-Primer/ch04 at master · pezy/Cpp-Primer · GitHub

@王月 童鞋曾經在 SO 上問過:c++ - How does the compiler interpret this expression, in terms of Precedence and Associativity?

你可以進一步參考~


推薦閱讀:

怎樣解決Qt發布程序體積過大的問題?
C++ 和 Objective-C 都可以 100% 翻譯為 C 代碼嗎?
C 語言的內存管理如何比 C++ 的 RAII 靠譜?
如何用C++實現一個視頻聊天伺服器,要用到那些協議和庫?
如何評價2016年藍橋杯決賽?

TAG:C | CC | CPrimer |