【发布时间】:2016-04-12 22:09:18
【问题描述】:
当超过整数的最大值(溢出)时,将最小值分配给它。
例如-System.out.println(Integer.MAX_VALUE+1); 输出:-2147483648
这里程序没有抛出异常,而是返回了错误的值。
此功能如何以任何方式帮助程序员或设计人员?
【问题讨论】:
-
这不是一个不正确的值,它是绝对正确的 - Java 中的整数是有符号的 32 位数字 - 将 1 添加到它的 MAX 值循环它回到它的最低值.. 它是什么你有...stackoverflow.com/a/5131206/4252352
-
从@MarkKeen 的数据类型角度来看绝对正确。但是,当开发人员编写计算代码时(例如:int x=3*1000000000),他不希望将负值分配给变量 x。这就是为什么我从开发人员的角度说它是一个错误的价值。我在计算 3% 的数字时在我的项目中遇到了这个问题。我误以为java会通过异常或错误但永远不会计算出错误的结果。
-
所以,这只是关于您希望溢出如何工作的意见:抛出异常,而不是产生意外结果?这是一个无法回答的问题 - 这就是它的工作原理,您已经知道这一点,您只需进行相应的工作,即编码检查/测试/正确的变量分配(int、long 等)。我不能说有一种编程语言可以完全按照每个人的需要和期望......
标签: java exception exception-handling integer-overflow