【问题标题】:Why Integers change their value when zeros are added to the left? [duplicate]为什么整数在左边添加零时会改变它们的值? [复制]
【发布时间】:2017-01-22 11:45:46
【问题描述】:

我只是想尝试一些整数并将值“0013”分配给整数a。当我将值打印到输出控制台时,我得到“11”。这是什么原因造成的?为什么我没有得到 13?

 int b = 0013;
 System.out.println(b);

【问题讨论】:

  • 它不是重复的,我问“为什么”..
  • @Teo 你是对的。
  • Java 继承了 C 和 C++ 的许多细节,包括用于八进制的前导 0(因为数字 0 看起来像八进制中的字母 o,我猜)和用于十六进制的 0x(在与八进制平行,x 因为它是“十六进制”,我还在猜测)。 C 是为低级编程而设计的,其中十六进制数字特别有用,我不确定八进制是否真的有用,或者他们只是认为它们是或想要包含它们以保持完整性。早在很久以前,我就看到过在具有 6 位字符集的计算机上使用八进制数。

标签: java int


【解决方案1】:

前导零均值八进制。就像一个前导的 0x 表示十六进制

【讨论】:

    【解决方案2】:

    Java 不小心自动将你的数字变成了八进制数。与十六进制表示法不同,其中数字前面有一个0x,八进制前面有一个零。编译器可能已经获取了您的数字并将其转换为八进制格式。

    尝试使用13 而不是0013

    【讨论】:

    • 不是偶然...
    • 谢谢!这就解释了一切!
    • 我可以告诉编译器将整数读取为十进制数吗?
    • @Teo 你可能不应该这样做。 Quote: 如果你的意思不是八进制,就不要使用前导0。毕竟,它们并不是特别有用(知道八进制数的程序员看到 09F 会感到困惑)。 Source
    猜你喜欢
    • 1970-01-01
    • 2021-02-04
    • 2016-05-07
    • 2020-01-08
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    相关资源
    最近更新 更多