婷婷同學(xué)_
2019-10-22 21:56:12
好的...所以我有一個(gè)愚蠢的想法,嘗試將值0123放入一個(gè)整數(shù),只是想知道會(huì)發(fā)生什么,我以為我在打印該值時(shí)會(huì)得到123,但我卻得到了83 ...有什么想法嗎?使該值變?yōu)?3的編譯器/內(nèi)存內(nèi)部發(fā)生了什么?我在C ++和C中使用GCC編譯器進(jìn)行了嘗試,還嘗試了使用float產(chǎn)生相同的結(jié)果。
4 回答

智慧大石
TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
根據(jù)[lex.icon]中的C ++標(biāo)準(zhǔn),整數(shù)文字可以分為3種類(lèi)型:十進(jìn)制文字,八進(jìn)制文字和十六進(jìn)制文字,每種類(lèi)型都可以具有后綴,表示長(zhǎng)度和長(zhǎng)度類(lèi)型
十進(jìn)制字面量必須以非零數(shù)字開(kāi)頭,而八進(jìn)制字面量必須以0開(kāi)頭,十六進(jìn)制字面量具有0x和0X,在前綴(對(duì)于八進(jìn)制和十六進(jìn)制字面量)之后,在相應(yīng)基數(shù)中無(wú)法表示的任何數(shù)字都應(yīng)觸發(fā)編譯錯(cuò)誤(例如,導(dǎo)致error C2041: illegal digit '9' for base '8'
和在其他編譯器中的09prog.cpp:6:15: error: invalid digit "9" in octal constant
),因?yàn)槿绻麛?shù)文字無(wú)法表示,則程序會(huì)格式錯(cuò)誤。
- 4 回答
- 0 關(guān)注
- 1986 瀏覽
添加回答
舉報(bào)
0/150
提交
取消