Java int 除法让我困惑

发布于 2024-08-10 20:36:55 字数 492 浏览 12 评论 0原文

我正在做非常简单的 int 除法,但得到了奇怪的结果。

此代码按预期打印 2

public static void main(String[] args) {
    int i = 200;
    int hundNum = i / 100;
    System.out.println(hundNum);
}

此代码按预期打印 1

public static void main(String[] args) {
    int i = 0200;
    int hundNum = i / 100;
    System.out.println(hundNum);
}

这是怎么回事?

(Windows XP Pro,在 Eclipse 3.4.1 中运行的 Java 1.6)

I am doing very simple int division and I am getting odd results.

This code prints 2 as expected:

public static void main(String[] args) {
    int i = 200;
    int hundNum = i / 100;
    System.out.println(hundNum);
}

This code prints 1 as not expected:

public static void main(String[] args) {
    int i = 0200;
    int hundNum = i / 100;
    System.out.println(hundNum);
}

What is going on here?

(Windows XP Pro, Java 1.6 running in Eclipse 3.4.1)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

青春如此纠结 2024-08-17 20:36:55

0200 是一个八进制(基数为 8)常量。它等于 128(十进制)。

来自 Java 语言规范的第 3.10.1 节

八进制数字由 ASCII 数字 0 后跟一个或多个 ASCII 数字 0 到 7 组成,可以表示正整数、零或负整数。

The value 0200 is an octal (base 8) constant. It is equal to 128 (decimal).

From Section 3.10.1 of the Java Language Specification:

An octal numeral consists of an ASCII digit 0 followed by one or more of the ASCII digits 0 through 7 and can represent a positive, zero, or negative integer.

謸气贵蔟 2024-08-17 20:36:55

值 0200 是八进制,十进制为 128

有关详细信息,请参阅原始数据类型<的文字部分/a> 解释。

The value 0200 is an octal, which is 128 in decimal.

For further information, see the literals section of the Primitive Data Types explanation.

机场等船 2024-08-17 20:36:55

在这里观察到一个有趣的行为。

如果我执行 Integer.parseInt("0200"),我会得到 200 作为 o/p。

怎么样?!

Observed an interesting behavior here.

If I do an Integer.parseInt("0200"), I get 200 as o/p.

Howzzat ?!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文