C++ 对溢出有什么作用?Java 对溢出有什么作用?
当 C++ 出现溢出错误时,我认为它会转到尽可能小的数字并从那里添加,但我不确定。不知道java是怎么处理这个问题的?
在 C++ 标准的 n3242 中
如果在计算表达式期间,结果未在数学上定义或不在其类型的可表示值范围内,则行为未定义。[注意:大多数现有的 C++ 实现忽略整数溢出。除以零的处理,使用零除数形成余数,所有浮点异常因机器而异,通常可以通过库函数进行调整。——尾注]"
来自 OP
当 C++ 出现溢出错误时,我认为它会转到尽可能小的数字并从那里添加
不,有时只是这样。
就 java 中的整数加法而言,溢出行为由JLS #15.18.2定义:
如果整数加法溢出,则结果是数学和的低位,以一些足够大的二进制补码格式表示。如果发生溢出,则结果的符号与两个操作数值的数学和的符号不同。