30
如何检测无符号整数乘法溢出?
Наэтотвопросестьответына 堆栈溢出нарусском:МожнолинаязыкахC / C ++определитьцелочисленноепереполнение? 我在C ++编写一个程序来找到所有的解决方案一b = c ^,其中一个,b和c ^一起使用所有的数字0-9只出现一次。该程序循环了a和b的值,并且每次在a,b和a b上运行一个数字计数例程,以检查是否满足数字条件。 然而,当可以产生伪解一个b溢出整数限制。我最终使用如下代码检查了这一点: unsigned long b, c, c_test; ... c_test=c*b; // Possible overflow if (c_test/b != c) {/* There has been an overflow*/} else c=c_test; // No overflow 有没有更好的测试溢出方式?我知道有些芯片具有发生溢出时设置的内部标志,但我从未见过通过C或C ++访问它。 请注意,在C和C ++中,签名 int溢出是未定义的行为,因此您必须在没有实际引起它的情况下对其进行检测。有关添加之前的有符号的int溢出,请参阅在C / C ++中检测有符号的溢出。
618
c++
c
integer-overflow