【问题标题】:Why the output of this code is different? [duplicate]为什么这段代码的输出不同? [复制]
【发布时间】:2019-08-15 16:55:32
【问题描述】:
int a[] = {120, 50, 016};

for(int P : a)
    System.out.print(P+" ");

我希望上面代码的输出是 120 50 16,但实际输出是 120 50 14。

【问题讨论】:

  • 016 是基数 8 中的 14
  • 前导 0 代表八进制数字系统:在此你的 016 = 1 * (8^1) + 6 * (8^0) = 14
  • 查看 Java 语言规范 3.10. Literals - 更多奇怪(很高兴知道)事实,例如文字数字中的下划线

标签: java


【解决方案1】:

那是因为 '016' 的行为和它的八进制值为 14。

【讨论】:

    【解决方案2】:

    它是八进制以 8 为基数,因为前面有一个 0。

    查看以下链接:https://en.wikipedia.org/wiki/Octal

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      相关资源
      最近更新 更多