第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C ++中未初始化的變量行為

C ++中未初始化的變量行為

C++
慕運(yùn)維8079593 2019-12-04 15:11:42
我檢查過(guò)自己,寫(xiě)了這樣的程序int main() { int i; cout << i; return 0;}我運(yùn)行了幾次程序,結(jié)果一直都是零。我已經(jīng)在C中嘗試過(guò),結(jié)果是一樣的。但是我的教科書(shū)說(shuō)如果不初始化在函數(shù)內(nèi)部定義的變量,則變量值將保持未定義狀態(tài),這意味著該元素將采用以前駐留在內(nèi)存中該位置的任何值。當(dāng)程序始終為變量分配空閑存儲(chǔ)位置時(shí),這怎么可能?怎么可能不是零(我假設(shè)默認(rèn)的可用內(nèi)存值為零)?
查看完整描述

3 回答

?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊

如果不初始化在函數(shù)內(nèi)部定義的變量,則變量值將保持未定義狀態(tài)。

這是真的。

這意味著元素將采用先前駐留在內(nèi)存中該位置的任何值。

這不是。

有時(shí)在實(shí)踐中會(huì)發(fā)生這種情況,您應(yīng)該意識(shí)到對(duì)于程序的任何給定運(yùn)行,獲取零不獲取零都完全適合此理論。

從理論上講,如果需要,編譯器實(shí)際上可以為該整數(shù)分配一個(gè)隨機(jī)初始值,因此嘗試對(duì)此進(jìn)行合理化完全沒(méi)有意義。但是,讓我們繼續(xù)前進(jìn),就好像我們假設(shè)“該元素采用先前位于內(nèi)存中該位置的任何值”一樣…

怎么可能不是零(我假設(shè)默認(rèn)的可用內(nèi)存值為零)?

好吧,這就是您假設(shè)時(shí)發(fā)生的情況。:)


查看完整回答
反對(duì) 回復(fù) 2019-12-04
?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊

該代碼調(diào)用未定義行為(UB),因?yàn)槲闯跏蓟褂昧酥羔槨?/p>


使用警告標(biāo)志時(shí),編譯器應(yīng)發(fā)出警告,-Wall例如:


warning: 'i' is used uninitialized in this function [-Wuninitialized]

  cout << i;

          ^

碰巧的是,在您的系統(tǒng)上,此運(yùn)行時(shí)它的值為0。這意味著該變量被分配給的垃圾值恰好為0,因?yàn)槟抢锏膬?nèi)存剩余表明了這一點(diǎn)。


但是,請(qǐng)注意,內(nèi)核零點(diǎn)相對(duì)經(jīng)常出現(xiàn)。這意味著我可以得到零作為系統(tǒng)輸出是很常見(jiàn)的,但是并不能保證也不應(yīng)該將其視為承諾。


查看完整回答
反對(duì) 回復(fù) 2019-12-04
  • 3 回答
  • 0 關(guān)注
  • 649 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)