C++与java中的溢出 < C++如何处理溢出? Java如何处理溢出 当C++有溢出错误时,我认为它可能是最小的,然后从中添加,但我不太确定。我不知道java如何处理这个问题 5表达式[expr] 第5.4段:

C++与java中的溢出 < C++如何处理溢出? Java如何处理溢出 当C++有溢出错误时,我认为它可能是最小的,然后从中添加,但我不太确定。我不知道java如何处理这个问题 5表达式[expr] 第5.4段:,java,c++,overflow,Java,C++,Overflow,如果在表达式求值期间,结果未在数学上定义或不在其类型的可表示值范围内,则行为未定义。【注意】C++的大多数现有实现忽略整数溢出。用零除法处理,用零除数形成余数,所有浮点异常在机器之间不同,通常可通过库函数来调整。 从OP 当C++有溢出错误时,我认为它可能是最小的,并从那里添加了 不。有时似乎是这样。就java中的整数加法而言,溢出行为是由以下定义的: 如果整数加法溢出,则结果是数学和的低阶位,如某些足够大的2的补码格式所示。如果发生溢出,则结果的符号与两个操作数值的数学和的符号不同 C++中的

如果在表达式求值期间,结果未在数学上定义或不在其类型的可表示值范围内,则行为未定义。【注意】C++的大多数现有实现忽略整数溢出。用零除法处理,用零除数形成余数,所有浮点异常在机器之间不同,通常可通过库函数来调整。 从OP

当C++有溢出错误时,我认为它可能是最小的,并从那里添加了


不。有时似乎是这样。

就java中的整数加法而言,溢出行为是由以下定义的:

如果整数加法溢出,则结果是数学和的低阶位,如某些足够大的2的补码格式所示。如果发生溢出,则结果的符号与两个操作数值的数学和的符号不同


C++中的溢出是未定义的行为。我们也在混合中添加perl!@cnicutar,我从来都不知道,但这似乎是正确的。谢谢你指出这一点。无论如何,未定义的行为是未定义的。C++没有处理它。整数溢出?缓冲区溢出?如果它是整数,你认为是有符号的还是无符号的?如果它很简单,你就不知道它有多模糊了。不要认为这是一个不完整的非常明确的问题。不要认为它过于宽泛,当前的两个答案一起涵盖了整个答案。这不是修辞性的,两个答案都引用了标准。它可以而且已经得到合理的回答。如果它是无符号的,则不适用:声明为无符号的无符号整数应遵守算术模2^n定律,其中n是该特定整数大小的值表示中的位数。-n3290§3.9.1。脚注46对此进行了澄清,这意味着无符号算术不会溢出,因为无法由结果无符号整数类型表示的结果被减少为比结果无符号整数类型可以表示的最大值大一的数的模。当它表示忽略整数溢出时这到底是什么意思?@user1251302:这意味着它假装整数永远不会溢出,并且从不检查它们是否溢出。检查会减慢程序的速度。因此,这就是为什么它会从正数切换到负数?@user1251302-某些实现可能会选择仅终止程序。或者默默地打破一切。或者他们喜欢的任何东西,因为它没有定义。相当多的实现选择让它只是通过,并做底层硬件做的事情,因为这是快速和免费的?这可能是部分的,因为它不包括C++,但我认为它不值得一投票。