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

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

如果用錯(cuò)誤的格式字符串調(diào)用printf會(huì)發(fā)生什么?

如果用錯(cuò)誤的格式字符串調(diào)用printf會(huì)發(fā)生什么?

C++
喵喵時(shí)光機(jī) 2019-10-22 22:06:30
或者換句話說(shuō):可能錯(cuò)誤printf/ fprintf十進(jìn)制整數(shù)(%d,%u,%ld,%lld)格式化字符串導(dǎo)致程序崩潰或?qū)е挛炊x的行為?Cosinder的以下代碼行:#include <iostream>#include <cstdio>int main() {    std::cout << sizeof(int) << std::endl              << sizeof(long) << std::endl;    long a = 10;    long b = 20;    std::printf("%d, %d\n", a, b);    return 0;}在32位架構(gòu)上的結(jié)果:4410, 2064位體系結(jié)構(gòu)的結(jié)果:4810, 20無(wú)論如何,程序都會(huì)打印出預(yù)期的結(jié)果。我知道,如果該long值超出int范圍,程序?qū)⒋蛴″e(cuò)誤的數(shù)字-這很丑陋,但不會(huì)影響程序的主要目的-但是除此之外,還會(huì)發(fā)生意外情況嗎?
查看完整描述

3 回答

?
慕標(biāo)琳琳

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

如果用錯(cuò)誤的格式字符串調(diào)用printf會(huì)發(fā)生什么?


什么都可能發(fā)生。這是未定義的行為!

未定義的行為意味著任何事情都可能發(fā)生。它可能會(huì)向您顯示預(yù)期的結(jié)果,也可能不會(huì),或者可能導(dǎo)致崩潰。任何事情都有可能發(fā)生,您只能怪自己,不要怪自己。


參考:


c99標(biāo)準(zhǔn):7.19.6.1:

第9段:


如果轉(zhuǎn)換規(guī)范無(wú)效,則行為未定義。225)如果任何參數(shù)都不是對(duì)應(yīng)coverage規(guī)范的正確類型,則行為未定義。


查看完整回答
反對(duì) 回復(fù) 2019-10-22
?
揚(yáng)帆大魚

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

哦,是的-printf取決于格式字符串,以確定接下來(lái)要獲取的變量的大小和類型。當(dāng)格式字符串錯(cuò)誤時(shí),它可能會(huì)嘗試獲取一個(gè)甚至不存在的變量,從而可能產(chǎn)生所有后果。


查看完整回答
反對(duì) 回復(fù) 2019-10-22
?
天涯盡頭無(wú)女友

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

這是未定義的行為-規(guī)范中沒(méi)有任何內(nèi)容告訴編譯器設(shè)計(jì)器(或C庫(kù)設(shè)計(jì)器)應(yīng)如何處理,因此允許他們執(zhí)行任何操作。

在實(shí)踐中,完全取決于數(shù)字的解釋是其中之一,最有可能的是,這樣做絕對(duì)不會(huì)給您帶來(lái)任何好處。真正糟糕的是,當(dāng)您將字符串與整數(shù)格式混合時(shí)-字符串會(huì)很好地打印為(奇怪的,也許是)數(shù)字,但是當(dāng)數(shù)字作為字符串傳遞時(shí),數(shù)字不太可能“起作用”-因?yàn)樽址侵赶虻谝粋€(gè)地址的指針字符-大多數(shù)數(shù)字在典型系統(tǒng)中不是有效的指針,因此會(huì)崩潰。

但是,沒(méi)有任何保證。在您的64位示例中,很明顯該數(shù)字是“ little endian”。嘗試使用0x100000000進(jìn)行同樣的操作,它會(huì)顯示0-因?yàn)槠溆嗟臄?shù)字都會(huì)丟失。


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

添加回答

舉報(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)