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

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

整數(shù)溢出和未定義的行為

整數(shù)溢出和未定義的行為

C
拉莫斯之舞 2019-12-04 15:05:34
由于可能,在實(shí)際加/減之前有很多關(guān)于整數(shù)溢出檢測的問題undefined behavior。所以,我的問題是為什么會(huì)首先產(chǎn)生這種undefined behavior現(xiàn)象?我可以想到2個(gè)原因:1)在這種情況下會(huì)產(chǎn)生異常的處理器。當(dāng)然,可以將其關(guān)閉,最可能的是編寫良好的CRT。2)使用其他數(shù)字二進(jìn)制表示形式的處理器(1的補(bǔ)碼?以10為基數(shù))。在這種情況下,未定義的行為將表現(xiàn)為不同的結(jié)果(但不會(huì)崩潰?。:冒?,我們可以忍受。那么,為什么有人要避免引起它呢?我想念什么嗎?
查看完整描述

3 回答

?
開心每一天1111

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

盡管大多數(shù)現(xiàn)代CPU使用2的補(bǔ)碼,并且整數(shù)溢出會(huì)導(dǎo)致可預(yù)測的模數(shù)環(huán)繞,但這絕不是通用的-為了使該語言具有足夠的通用性,使其可以在最廣泛的體系結(jié)構(gòu)上使用,最好將整數(shù)溢出指定為UB 。


查看完整回答
反對(duì) 回復(fù) 2019-12-04
?
慕森王

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

盡管將簽名溢出指定為未定義行為的歷史原因可能是這些虛假的遺留表示(補(bǔ)碼/符號(hào)幅度)和溢出中斷,但使其保持未定義行為的現(xiàn)代原因是優(yōu)化。正如J-16 SDiZ所暗示的那樣,帶符號(hào)的溢出是未定義的行為,這一事實(shí)使編譯器可以優(yōu)化某些條件,這些條件的代數(shù)真值(但不一定是表示層真值)已由先前的分支建立。它還可能允許編譯器以某種方式代數(shù)簡化某些表達(dá)式(尤其是涉及乘法或除法的表達(dá)式),如果子表達(dá)式包含溢出,則該表達(dá)式可能會(huì)給出與原始編寫的求值順序不同的結(jié)果,

為了允許優(yōu)化的目的,未定義行為的另一個(gè)巨大示例是別名規(guī)則。


查看完整回答
反對(duì) 回復(fù) 2019-12-04
?
紫衣仙女

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

undefined behavior規(guī)范中的位涉及一些編譯器優(yōu)化。例如:


if (a > 0 && b > 0) {

    if ( a + b <= 0 ) {

       // this branch may be optimized out by compiler

    } else {

       // this branch will always run

    }

}

現(xiàn)代的C編譯器并不是那么簡單,它會(huì)進(jìn)行大量的猜測和優(yōu)化。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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