修改(重要):此问题比标记为重复的问题更具体。这就是问如何用布尔函数来做。但现在我知道它并没有像那样工作。此问题表明a + b = c
只能在您编写if(c - b == a)
并且没有运算符独立的检查方式时进行溢出检查。
一旦发生溢出,你就无法检测到它
-lorro
我一直在寻找一种使用if语句检测C ++中的整数溢出的方法。
可能的伪代码:
#include <iostream>
#include <...>
using namespace std;
bool isOverflow(...);
int main()
{
int a = INT_MAX + 1;
if (isOverflow(...))
{
cout << "Overflow" << endl;
}
else
{
cout << "No Overflow" << endl;
}
return 0;
}
bool isOverflow
{
...
}
老实说,这个伪代码偏好可能不起作用,但我已经多次看到这个问题并且没有找到任何有用的答案。可能需要unsigned
或unsigned long long
,但我并不一定鼓励使用这些内容。
编辑:
我想将它用于带有3个数字的乘法句子:
a * a * b
我知道pow
中有一个<math.h>
功能,但这个主题已经不在了。
我也知道,如果我想要int
来自pow
的准确int(pow(base, index) + 0.5)
结果,我会使用:
$('#show').on("click", function(){
$.ajax({
async: false,
data: {id: t},
type: 'POST',
url: '/get_logs/',
success: function(result){
$('#' + content_id).html(result)
$('#' + show).attr('id',"hide")
}
});
});
答案 0 :(得分:0)
这取决于您使用的操作类型以及操作数的类型。
e.g。如果要在加法后检测溢出,并且两个操作数都是无符号整数,那么如果结果小于两个操作数的总和,则会发生溢出。
bool overflow;
if (a+b < a)
overflow = true;
else
overflow = false;
对于有符号整数,您可以参考优秀的帖子here