14得票5回答
在C++中检查下溢/上溢?

有没有一种通用的方法来检查给定数据类型(uint32、int等)是否溢出或下溢? 我正在做这样的事情:uint32 a,b,c; ... //initialize a,b,c if(b < c) { a -= (c - b) } 在我迭代若干次后输出 a 时,它显示一个很大的数值...

18得票2回答
Swift:如何为函数禁用整数溢出/下溢陷阱

我正在将一些旧的 C 代码导入到 Swift 项目中,并将其转换为纯 Swift 代码。 其中一部分代码执行“加密”操作,类似于: let a = UInt8(x) // e.g. 30 let b = a - 237 在C语言中,这个函数会发生下溢并循环回来,对于这个特定的函数来说,...

9得票2回答
“包装”乘法溢出的结果是什么?

bcache源码在这里包含以下行: schedule_delayed_work(&dc->writeback_rate_update, dc->writeback_rate_update_seconds * HZ); writeback_rate_update...

156得票6回答
为什么 long long n = 2000*2000*2000*2000; 会溢出?

long long int n = 2000*2000*2000*2000; // overflow long long int n = pow(2000,4); // works long long int n = 16000000000000; ...

9得票4回答
符合标准的编译器能否破坏uint32_t -> int16_t -> int32_t转换?

最近我们在一些旧代码中发现了奇怪的行为。这些代码已经运行了很长时间,但是当编译器优化达到最大值时,在某些平台(XBox 360,PowerPC)上就会出问题。通常情况下,我会怀疑未定义的行为。 代码大致如下: #include <stdint.h> uint32_t sign_...

733得票30回答
我该如何检测无符号整数溢出?

我正在使用C++编写程序,以找到所有满足ab=c的解,其中a、b和c一起使用所有数字0-9,每个数字仅使用一次。该程序循环遍历a和b的值,并每次在a、b和ab上运行数字计数例程,以检查是否满足数字条件。 然而,当ab超出整数限制时,会生成虚假的解。最终我使用类似以下代码来检查这种情况:uns...

23得票3回答
关于无符号整数下溢的C语言行为的问题

我在许多地方阅读到,在C语言中,与有符号整数相比,无符号整数溢出是被定义明确的。 下溢是一样的吗? 例如:unsigned int x = -1; // Does x == UINT_MAX? 谢谢。 我记不清在哪里看到的,但我读过一个地方说无符号整数类型的算术运算是模运算,所以如果这是...

30得票4回答
为什么(18446744073709551615 == -1)成立?

在我处理 string::npos 时,我注意到了一些东西,但在网上找不到任何解释。(string::npos == ULONG_MAX) 和(string::npos == -1) 是真的。 所以我尝试了这个:(18446744073709551615 == -1) 这也是正确的。 怎么...

18得票4回答
Java中的溢出是如何工作的?

我了解溢出的概念,它是指"数字过大超出数据类型的容量范围,系统会从下一个最小值开始重新计数"。 例如: short s = (short)1921222; // Stored as 20678 在这个例子中,我们从 -32768 (Short.MIN_VALUE) 开始计数,但是当我...

9得票3回答
“-ftrapv”和“-fwrapv”:哪个更高效?

从GNU的网站上: -ftrapv 此选项在加法、减法和乘法运算中为有符号溢出生成陷阱。 -fwrapv 此选项指示编译器假定有符号算术溢出的加法、减法和乘法使用二进制补码表示进行循环包装。此标志启用某些优化并禁用其他优化。 https://gcc.gnu.org/onlinedo...