我在C++编写一个程序来找到所有的解决方案一b = c ^,其中一个,b和c ^一起使用所有的数字0-9只出现一次.该方案在循环值一和b,并且在每次跑了数字计数程序一,b和一个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
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来测试溢出?我知道有些芯片有一个内部标志,当溢出发生时会设置,但我从未见过通过C或C++访问它.
请注意,在C和C++中,签名 int溢出是未定义的行为,因此您必须在不实际导致它的情况下检测它.有关添加前的signed int overflow,请参阅在C/C++中检测带符号的溢出
我想在C++中实现一个大的int类作为编程练习 - 一个可以处理大于long int的数字的类.我知道已经有几个开源实现,但我想写自己的.我试图了解正确的方法是什么.
我知道一般策略是将数字作为字符串,然后将其分解为较小的数字(例如,单个数字),并将它们放在一个数组中.此时,实现各种比较运算符应该相对简单.我主要担心的是如何实现添加和乘法等功能.
我正在寻找一种通用的方法和建议,而不是实际的工作代码.
我必须存储一个大于long数据类型的最大值的整数值.如何在内存中存储和操作此值?
如果可能的话,请通过一个例子来说明.