好的...所以我有一個愚蠢的想法,嘗試將值0123放入一個整數,只是想知道會發生什么,我以為我在打印該值時會得到123,但我卻得到了83 ...有什么想法嗎?使該值變為83的編譯器/內存內部發生了什么?我在C ++和C中使用GCC編譯器進行了嘗試,還嘗試了使用float產生相同的結果。
4 回答

智慧大石
TA貢獻1946條經驗 獲得超3個贊
根據[lex.icon]中的C ++標準,整數文字可以分為3種類型:十進制文字,八進制文字和十六進制文字,每種類型都可以具有后綴,表示長度和長度類型
十進制字面量必須以非零數字開頭,而八進制字面量必須以0開頭,十六進制字面量具有0x和0X,在前綴(對于八進制和十六進制字面量)之后,在相應基數中無法表示的任何數字都應觸發編譯錯誤(例如,導致error C2041: illegal digit '9' for base '8'
和在其他編譯器中的09prog.cpp:6:15: error: invalid digit "9" in octal constant
),因為如果整數文字無法表示,則程序會格式錯誤。
- 4 回答
- 0 關注
- 1985 瀏覽
添加回答
舉報
0/150
提交
取消