Joh*_*ohn 18
当您尝试表示一个大于整数类型可以处理的最大数字的数字时,会发生整数溢出.
如果您尝试在一个字节中表示数字300,则会出现整数溢出(最大值为255).两个字节中的100,000也是整数溢出(65,535是最大值).
你需要关心它,因为数学运算不会像你期望的那样运作.如果有整数溢出,A + B实际上不等于A和B的总和.
您可以通过不首先创建条件来避免它(通常通过选择您的整数类型足够大以至于不会溢出,或者通过限制用户输入以便不会发生溢出).
解释它的最简单方法是用一个简单的例子.想象一下,我们有一个4位无符号整数.0将是0000而1111将是15.因此,如果你增加15而不是16,你将回到0000,因为16实际上是10000,我们不能用少于5位表示.Ergo溢出......
在实践中,数字要大得多,如果int已经签名,它会在溢出时循环到一个大的负数,但上面基本上是发生了什么.
另一种看待它的方法是将其视为与汽车中的里程表在达到999999 km/mi后再次翻到零时发生的情况大致相同.