国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++2011程序中的未定義行為

2019-11-06 06:57:44
字體:
供稿:網(wǎng)友

C++2011程序中的一些未定義行為總結(jié):

(1)對于帶符號的整型來說,賦值或者計算結(jié)果超過了范圍,將是未定義行為

(2)對于內(nèi)置類型變量來說,當(dāng)其定義在原函數(shù)外未初始化時,會默認初始化為一個特定的值;對于函數(shù)內(nèi)定義的變量而未初始化時,該變量將是未定義的行為

(3)指針的值一般有四種:指向某一個對象;指向緊鄰對象所占空間的下一個位置;空指針,nullptr,NULL或者0;無效指針。當(dāng)訪問或者拷貝無效指針的時候,將是未定義行為

(4)求值順序問題:運算符的優(yōu)先級確定運算符的執(zhí)行順序,也即運算對象的組合方式;結(jié)合律表明了同一優(yōu)先級的情況下運算對象的組合順序;對于求值順序,當(dāng)某一運算符的幾個對象均指向并修改某一對象時,編譯器的計算順序?qū)⑹遣豢深A(yù)知的,即運算對象的求值順序與優(yōu)先級以及結(jié)合律無關(guān),下面的兩種情況有可能產(chǎn)生未定義行為:

int i=0; cout<<i<<" "<<++i<<endl;

int i= f()*g();

(5)算術(shù)運算時,除數(shù)是0時,以及計算結(jié)果超出了類型的范圍,算術(shù)表達式均會產(chǎn)生未定義行為,得到一個不確定的值。

(6)對于string以及vector對象中的下標(biāo)運算符,要確保下標(biāo)在有效范圍內(nèi),即在處理遍歷string以及vector對象中的元素時的for(  auto  ; index != s.size() ;   );

(7)對于求值順序而言,當(dāng)一個表達式中一個子表達式改變了某一個對象,而另一個子表達式又要使用該對象時,編譯器將產(chǎn)生未定義行為,即求值順序的不確定性

(8)對于指針而言,可以定義而不初始化也是合法的,但是訪問或者拷貝一個沒有初始化的指針,或者沒有指向任何對象的指針將是不安全的行為,對于空指針nullptr或者0呢?

解引用無效指針,解引用空指針?

(9)位運算中的左移操作,假如運算對象是帶符號的,此時可能對符號有影響,而對符號位的操作依賴于具體的機器,這是一種未定義行為,所以位運算只作用于無符號整型。

(10)


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 凌海市| 江津市| 策勒县| 安陆市| 青海省| 拜泉县| 长治市| 平南县| 丰县| 淮南市| 昌图县| 庄浪县| 苏州市| 安图县| 南丹县| 温宿县| 昌宁县| 洛宁县| 通州市| 唐海县| 永宁县| 栾城县| 湛江市| 明水县| 姚安县| 永新县| 昭通市| 武乡县| 长治市| 菏泽市| 南宁市| 道孚县| 福海县| 金沙县| 天全县| 义马市| 高要市| 哈巴河县| 东宁县| 绥德县| 乐平市|