1 回答

TA貢獻1805條經(jīng)驗 獲得超10個贊
N3936
:
8.5
如果沒有為對象指定初始化程序,則該對象是默認初始化的;如果不執(zhí)行初始化,則具有自動或動態(tài)存儲持續(xù)時間的對象的值不確定。[ 注:具有靜態(tài)或線程存儲持續(xù)時間的對象為零初始化對象,請參見3.6.2。- 尾注 ]
如果沒有為對象指定初始化程序,則該對象是默認初始化的。當獲得具有自動或動態(tài)存儲持續(xù)時間的對象的存儲時,該對象具有 不定值,如果不對象執(zhí)行初始化,則該對象保留一個不確定值,直到替換該值(5.17[expr.ass])。[注意:具有靜態(tài)或線程存儲持續(xù)時間的對象為零初始化,請參見3.6.2[basic.start.init]。-尾注] 如果由求值產(chǎn)生不確定值,則除下列情況外,該行為是未定義的。:
如果一個無符號窄字符類型(3.9.1[basic.basic])的不確定值是通過對以下方面的評估而產(chǎn)生的:
然后,操作的結果是一個不確定的值。
條件表達式的第二個或第三個操作數(shù)(5.16[expr.cond]),
逗號的右操作數(shù)(5.18[除逗號]),
轉(zhuǎn)換或轉(zhuǎn)換為無符號窄字符類型的操作數(shù)(4.7[等號整],5.2.3[expr.type.conv],5.2.9[expr.static.cast],5.4[expr.cast],或
被丟棄的值表達式(第5[expr]條),
如果一個無符號窄字符類型的不確定值(3.9.1[basic.basic])是由一個簡單賦值運算符(5.17[expr.ass])的右操作數(shù)計算產(chǎn)生的,其第一個操作數(shù)是無符號窄字符類型的lvalue,則一個不確定值替換左操作數(shù)所引用的對象的值。 如果在初始化無符號窄字符類型的對象時,通過初始化表達式的計算生成無符號窄字符類型的不確定值(3.9.1[basic.basic]),則該對象被初始化為不確定的值。
[ 例子:
int f(bool b) { unsigned char c; unsigned char d = c; // OK, d has an indeterminate value int e = d; // undefined behavior return b ? d : 0; // undefined behavior if b is true}— 終例 ]
N3937
C++14 DIS
.
C+1Y之前
4.1
lvalue-rvalue轉(zhuǎn)換
[.]如果對象未初始化,則需要進行此轉(zhuǎn)換的程序具有未定義的行為。[.]
- 1 回答
- 0 關注
- 359 瀏覽
添加回答
舉報