您好,登錄后才能下訂單哦!
本篇內容主要講解“C++怎么避免在表達式中使用無定義的運算次序”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++怎么避免在表達式中使用無定義的運算次序”吧!
ES.43: 避免在表達式中使用無定義的運算次序
你無法知道這樣的代碼會做什么。可移植性。雖然可以帶來某些實際的好處,但可能只要換一個編譯器(例如編譯器的下一個版本)或者修改了優化設定情況就會發生變化。
Note(注意)
C++17收緊了有關運算順序的規則:除了從右向左的賦值之外都是從左向右計算,函數參數的求值次序是無定義的。
However, remember that your code may be compiled with a pre-C++17 compiler (e.g., through cut-and-paste) so don't be too clever.
但是,還是不要忘了,你的代碼可能被C++17之前的編譯器編譯(例如通過剪切和粘貼),不要過于聰明。
Example(示例)
v[i] = ++i; // the result is undefined
A good rule of thumb is that you should not read a value twice in an expression where you write to it.
一條非常好的經驗規則是:不要在一個需要對其寫入的表達式中兩次讀取變量的值。
Enforcement(實施建議)
Can be detected by a good analyzer.
這個問題可以被良好的代碼分析器檢出。
到此,相信大家對“C++怎么避免在表達式中使用無定義的運算次序”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。