3 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
從技術(shù)上講,未初始化的非靜態(tài)局部變量的值是Indeterminate [Ref 1]。
簡(jiǎn)而言之,可以是任何東西。訪問(wèn)此類未初始化的變量將導(dǎo)致未定義的行為。[參考2]
[Ref 1]
C99第6.7.8節(jié)初始化:
如果未自動(dòng)初始化具有自動(dòng)存儲(chǔ)期限的對(duì)象,則其值不確定。
[參考2]
C99第3.18節(jié)未定義的行為:
使用非便攜式或錯(cuò)誤程序構(gòu)造時(shí)的行為,錯(cuò)誤數(shù)據(jù)或不確定值的對(duì)象,對(duì)此本國(guó)際標(biāo)準(zhǔn)不施加任何要求。
注意:強(qiáng)調(diào)我的。

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
在C和C ++中,訪問(wèn)統(tǒng)一變量都是未定義的行為,因此可以讀取任何值。
您的程序也有可能崩潰:一旦進(jìn)入未定義的行為領(lǐng)域,所有賭注都將變?yōu)?sup>1。
1我從未見過(guò)程序會(huì)因訪問(wèn)未初始化的變量而崩潰,除非它是指針。

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
它是未定義的。在不同的編譯器,不同的操作系統(tǒng),不同的程序運(yùn)行情況之間,可能有所不同。它甚至可能不是一個(gè)特定的值:由于未定義效果,因此允許編譯器對(duì)此代碼執(zhí)行任何操作。它可能會(huì)選擇優(yōu)化整個(gè)程序。它甚至可能選擇用安裝鍵盤記錄程序并竊取您所有網(wǎng)上銀行登錄詳細(xì)信息的程序替換您的程序。
如果您想知道該值,唯一的方法是設(shè)置它。
- 3 回答
- 0 關(guān)注
- 789 瀏覽
添加回答
舉報(bào)