C++和 Java 中的溢出

Overflow in C++ and Java

本文关键字:溢出 Java C++      更新时间:2023-10-16

C++如何处理溢出?Java如何处理溢出?

当C++出现溢出错误时,我认为它会转到尽可能小的数字并从那里添加,但我并不完全确定。我不知道java如何处理这个问题?

在 C++ 标准的 n3242 中

5 表达式 [expr]

第5.4段:

如果在表达式计算期间,结果未在数学上定义或不在其类型的可表示值范围内,则行为未定义。[ 注意:大多数现有的C++实现都忽略整数溢出。处理除以零,使用零除数形成余数,所有浮点异常因机器而异,通常由库函数调节。—尾注]">

从OP

当C++出现溢出错误时,我认为它会转到尽可能小的数字并从那里添加

不。有时似乎就是这样。

就 java 中的整数加法而言,溢出行为由 JLS #15.18.2 定义:

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