c++primer練習中的someValue?++x,++y:--x,--y該怎麼理解?
02-07
首先,你要清楚,逗號的優先順序最低,所以:
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年藍橋杯決賽?