以 0 开头的 int 行为很奇怪
可能的重复:
带前导零的整数
有人可以告诉我这里发生了什么吗?当我用前导零初始化 int 时,程序不会忽略零,而是执行一些我不知道的其他操作。
int num = 0200;
System.out.println(num); // 128
System.out.println(033); // 27
Possible Duplicate:
Integer with leading zeroes
Can someone please tell me what is going on here? When I initialize an int with leading zeroes the program does not ignore the zeroes and instead does some other operation I am unaware of.
int num = 0200;
System.out.println(num); // 128
System.out.println(033); // 27
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当然 - 根据 Java 语言规范,它会将其视为八进制文字,第 3.10.1 节:
Sure - it's treating it as an octal literal, as per the Java Language Specification, section 3.10.1:
这是一个八进制(以 8 为基数)文字。
同样,
0x27
是十六进制(以 16 为基数)文字,十进制值为 39。That's an octal (base 8) literal.
Similarly,
0x27
is a hexadecimal (base 16) literal, with a decimal value of 39.