99得票13回答
在C/C++中检测有符号整数溢出

乍一看,这个问题可能看起来像是如何检测整数溢出?的重复,但实际上它有明显的不同。 我发现,虽然检测无符号整数溢出非常简单,但检测C/C ++中的有符号溢出实际上比大多数人想象的要困难得多。 最明显但很幼稚的方法可能是:int add(int lhs, int rhs) { int sum...

86得票12回答
在循环中,整数溢出何时变为未定义行为?

这是一个示例,用来说明我的问题,其中涉及了一些更加复杂的代码,我无法在这里发布。#include <stdio.h> int main() { int a = 0; for (int i = 0; i < 3; i++) { print...

8得票1回答
计算 x 的 n 次幂并在不可能时返回整数极限而不会溢出的元函数?

考虑以下代码: template <std::intmax_t Base, std::intmax_t Exponent> struct integer_power_bounded { static_assert(Exponent >= 0, ...

20得票2回答
整数除法溢出

问题 我一直在思考整数类型(int)溢出的问题,我发现除法也可能会导致溢出。 示例:在我的当前平台上,我有以下代码:INT_MIN == -INT_MAX - 1 因此INT_MIN < -INT_MAX 因此INT_MIN / -1 > -INT_MAX / -1 因此INT...

16得票2回答
在Swift中如何捕获算术溢出错误?

这个应该很简单。我们知道运算符&+对整数进行模运算(环绕),而运算符+会导致错误。$ swift 1> var x: Int8 = 100 x: Int8 = 100 2> x &+ x $R0: Int8 = -56 3> x + x Execu...

117得票15回答
如何在Java中检查两个数字相乘是否会导致溢出?

我想处理两个数字相乘导致溢出的特殊情况。代码大致如下:int a = 20; long b = 30; // if a or b are big enough, this result will silently overflow long c = a * b; 那是一个简化版本。在真实的程...

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

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

14得票2回答
整数相乘并赋值给长整型时出现溢出

如果我在立即窗口中输入以下内容,我会得到运行时错误“6”:溢出。MsgBox 24 * 60 * 60 为什么会这样呢? 这也失败了:Dim giveTime As Long giveTime = 24 * 60 * 60 为什么会这样呢?giveTime被声明为Long类型,因此24...

7得票4回答
当a和b都小于c,但a * b导致溢出时,我该如何计算a * b / c?

假设 uint 是我固定点平台上最大的整数类型,那么我有: uint func(uint a, uint b, uint c); 该函数需要返回一个良好的近似值 a * b / c。 变量 c 的值大于变量 a 和变量 b 的值。 因此我们可以确定变量 a * b / c 的值适合使...

7得票3回答
如何在Rust中使用惯用语测试左移(<<)溢出?

对于大部分可能会溢出的操作符,Rust 提供了检查版本。例如,要测试加法是否溢出,可以使用checked_add: match 255u8.checked_add(1) { Some(_) =&gt; println!("no overflow"), None =&gt; p...