Java 为什么程序在出现溢出或下溢时不引发异常
当超过整数的最大值时,将为其指定最小值。 Ex-System.out.printlinteger.MAX_值+1;输出:-2147483648 在这里,程序不会抛出异常,而是返回不正确的值。Java 为什么程序在出现溢出或下溢时不引发异常,java,exception,exception-handling,integer-overflow,Java,Exception,Exception Handling,Integer Overflow,当超过整数的最大值时,将为其指定最小值。 Ex-System.out.printlinteger.MAX_值+1;输出:-2147483648 在这里,程序不会抛出异常,而是返回不正确的值。 这个特性如何帮助程序员或设计师 它使代码运行更快,因为不需要在每次算术运算后检查溢出。我不认为java的原始实现者需要检查计算是否导致溢出的开销。您可以通过编程进行检查。比如说, 这是传统C和C++如何处理整数的,所以有一个先例。p> 这不是一个不正确的值,它是绝对正确的-Java中的整数是一个有符号的32
这个特性如何帮助程序员或设计师 它使代码运行更快,因为不需要在每次算术运算后检查溢出。我不认为java的原始实现者需要检查计算是否导致溢出的开销。您可以通过编程进行检查。比如说,
这是传统C和C++如何处理整数的,所以有一个先例。p> 这不是一个不正确的值,它是绝对正确的-Java中的整数是一个有符号的32位数字-向其最大值添加1会使其返回到其最小值。。这就是你所拥有的。。。绝对正确的数据类型观点@MarkKeen。但是,当开发人员为一个计算编写代码时,比如:int x=3*100000000,那么他不希望为变量x赋值为负值。这就是为什么从开发者的角度来看,我认为这是一个错误的价值观。我在计算数字的3%时遇到了这个问题。我错误地认为java会通过异常或错误,但永远不会计算错误的结果。因此,这只是一个关于溢出如何工作的观点:抛出异常,而不是产生意外结果?这是一个无法回答的问题-这就是它的工作原理,您已经知道了这一点,您只需要相应地工作,即编码检查/测试/正确的变量赋值int,long等。。。我不能说有一种编程语言能完全满足每个人的需求和期望。。。