好的...所以我有一个愚蠢的想法,尝试将值0123放入一个整数,只是想知道会发生什么,我以为我在打印该值时会得到123,但我却得到了83 ...有什么想法吗?使该值变为83的编译器/内存内部发生了什么?我在C ++和C中使用GCC编译器进行了尝试,还尝试了使用float产生相同的结果。
4 回答
![?](http://img1.sycdn.imooc.com/5333a0490001f9ff02200220-100-100.jpg)
智慧大石
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 关注
- 1878 浏览
添加回答
举报
0/150
提交
取消