为了账号安全,请及时绑定邮箱和手机立即绑定

当C / C ++中的数字常量以0开头时,这是什么意思?

当C / C ++中的数字常量以0开头时,这是什么意思?

C++ C
婷婷同学_ 2019-10-22 21:56:12
好的...所以我有一个愚蠢的想法,尝试将值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),因为如果整数文字无法表示,则程序会格式错误。


查看完整回答
反对 回复 2019-10-22
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

0123是一个八进制常量(以8为底)。83是十进制等效项。


查看完整回答
反对 回复 2019-10-22
  • 4 回答
  • 0 关注
  • 1700 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信