新聞中心
本篇內(nèi)容主要講解“C++怎么避免在表達(dá)式中使用無(wú)定義的運(yùn)算次序”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“C++怎么避免在表達(dá)式中使用無(wú)定義的運(yùn)算次序”吧!
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、和平ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的和平網(wǎng)站制作公司
ES.43: 避免在表達(dá)式中使用無(wú)定義的運(yùn)算次序
Reason(原因)
你無(wú)法知道這樣的代碼會(huì)做什么??梢浦残浴km然可以帶來(lái)某些實(shí)際的好處,但可能只要換一個(gè)編譯器(例如編譯器的下一個(gè)版本)或者修改了優(yōu)化設(shè)定情況就會(huì)發(fā)生變化。
Note(注意)
C++17收緊了有關(guān)運(yùn)算順序的規(guī)則:除了從右向左的賦值之外都是從左向右計(jì)算,函數(shù)參數(shù)的求值次序是無(wú)定義的。
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之前的編譯器編譯(例如通過(guò)剪切和粘貼),不要過(guò)于聰明。
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.
一條非常好的經(jīng)驗(yàn)規(guī)則是:不要在一個(gè)需要對(duì)其寫入的表達(dá)式中兩次讀取變量的值。
Enforcement(實(shí)施建議)
Can be detected by a good analyzer.
這個(gè)問(wèn)題可以被良好的代碼分析器檢出。
到此,相信大家對(duì)“C++怎么避免在表達(dá)式中使用無(wú)定義的運(yùn)算次序”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
分享題目:C++怎么避免在表達(dá)式中使用無(wú)定義的運(yùn)算次序
分享鏈接:http://fisionsoft.com.cn/article/gpdphe.html