当前位置:  开发笔记 > 编程语言 > 正文

Java int division令我困惑

如何解决《Javaintdivision令我困惑》经验,为你挑选了2个好方法。

我正在做非常简单的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)



1> Greg Hewgill..:

该值0200八进制(基数为8)常量.它等于128(十进制).

从Java语言规范的第3.10.1节开始:

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


这是基于C语言最令人恼火的功能之一.我从未见过某人故意使用八进制常量,但我已经看到它会多次出现问题.
哇,我简直不敢相信我之前没有遇到过这个问题.我觉得自己像个白痴.谢谢!
我看着你的代表得分,虽然它一定是别的东西!
这是奥卡姆剃刀的案例.这通常是最简单的解决方案.
我故意使用八进制常量的唯一时间是在C`mkdir()函数中.

2> moogs..:

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

有关详细信息,请参阅"基元数据类型"解释的文字部分.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有