五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C/C++編程筆記:C語(yǔ)言和C++中的未定義行為,及其優(yōu)缺分析

2021-01-27 21:12 作者:C語(yǔ)言編程__Plus  | 我要投稿


考慮以下C / C ++程序并嘗試猜測(cè)輸出什么?

舉例一:


舉例二:


舉例三:


舉例四:


舉例五:


舉例六:


舉例七:


以上所有程序的輸出都是不可預(yù)測(cè)的(或不確定的)。編譯器(實(shí)現(xiàn)C / C ++標(biāo)準(zhǔn))可以自由地做任何事情,因?yàn)镃和C ++標(biāo)準(zhǔn)未定義它們。

像Java這樣的語(yǔ)言會(huì)立即發(fā)現(xiàn)錯(cuò)誤,但是在少數(shù)情況下,像C和C ++這樣的語(yǔ)言會(huì)繼續(xù)以靜默但有錯(cuò)誤的方式執(zhí)行代碼,這可能會(huì)導(dǎo)致無(wú)法預(yù)測(cè)的結(jié)果。該程序可能會(huì)因任何類(lèi)型的錯(cuò)誤消息而崩潰,也可能在不知不覺(jué)中損壞數(shù)據(jù)的情況,這是一個(gè)嚴(yán)重的問(wèn)題。

了解未定義行為的重要性

如果用戶(hù)開(kāi)始在C / C ++環(huán)境中學(xué)習(xí)并且對(duì)未定義行為的概念不清楚,那么將來(lái)可能會(huì)帶來(lái)很多問(wèn)題,例如在調(diào)試其他人的代碼時(shí)可能實(shí)際上很難跟蹤根目錄。未定義的錯(cuò)誤。

未定義行為

風(fēng)險(xiǎn)和缺點(diǎn)程序員有時(shí)依賴(lài)未定義行為的特定實(shí)現(xiàn)(或編譯器),這可能會(huì)在更改/升級(jí)編譯器時(shí)引起問(wèn)題。例如,最后一個(gè)程序在大多數(shù)編譯器中產(chǎn)生72作為輸出,但是基于此假設(shè)實(shí)現(xiàn)軟件不是一個(gè)好主意。

未定義的行為也可能導(dǎo)致安全漏洞,特別是由于未檢查數(shù)組越界的情況(導(dǎo)致緩沖區(qū)溢出攻擊)。

未定義行為的優(yōu)點(diǎn)

C和C ++具有未定義行為,因?yàn)樗试S編譯器避免進(jìn)行大量檢查。假設(shè)一組具有較高性能數(shù)組的代碼無(wú)需關(guān)注邊界,這避免了需要復(fù)雜的優(yōu)化過(guò)程來(lái)檢查循環(huán)外的此類(lèi)條件。當(dāng)緊密綁定循環(huán)獲得C編譯器通常提供的帶符號(hào)溢出的未定義性質(zhì)的優(yōu)點(diǎn)時(shí),會(huì)將程序從30%加快到50%的速度。

我們還有另一個(gè)優(yōu)點(diǎn),因?yàn)樗试S我們將變量的值存儲(chǔ)在處理器寄存器中,并在大于源代碼中變量的時(shí)間內(nèi)進(jìn)行操作。它還有助于進(jìn)行環(huán)繞檢查,然后進(jìn)行編譯時(shí)檢查,如果不更了解C / C ++編譯器中的未定義行為,就無(wú)法進(jìn)行檢查。

希望對(duì)你有幫助~

另外如果你想更好的提升你的編程能力,學(xué)好C語(yǔ)言C++編程!彎道超車(chē),快人一步!筆者這里或許可以幫到你~

UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~

分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門(mén)教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!

編程學(xué)習(xí)書(shū)籍分享:


編程學(xué)習(xí)視頻分享:



C/C++編程筆記:C語(yǔ)言和C++中的未定義行為,及其優(yōu)缺分析的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
大连市| 巴林左旗| 赤城县| SHOW| 河东区| 沧州市| 汾西县| 舒兰市| 四子王旗| 佛学| 洛浦县| 莱芜市| 彭州市| 布拖县| 化德县| 延川县| 杂多县| 阿坝县| 板桥市| 崇义县| 渝中区| 那坡县| 滁州市| 沙雅县| 滦平县| 杨浦区| 泸西县| 杭州市| 东光县| 花垣县| 闻喜县| 宁明县| 潼南县| 河北省| 钦州市| 高阳县| 泗水县| 威信县| 西城区| 嘉兴市| 武汉市|