可能重复:
在 C/C++ 中检测整数溢出的最佳方法
我正在用 C 编写一个函数,但问题是通用的。该函数接受三个整数并返回有关这三个整数的一些信息。
我怀疑这里的问题是整数可以达到最大值,这可能导致溢出。
例如:如果我将 a 作为最大值传递,并且 b 可以是 1 - max,那么在这种情况下,if 条件中的表达式 (a+b)>c 会导致溢出吗?如果是这样,我该如何处理?
我的解决方案是保留一个长整数作为临时变量以保留 a+b 的值并在表达式中使用它,但这听起来很脏。
参考这个片段:
int
triangle_type(int a, int b, int c) {
if (!((a+b)>c)&&((b+c) > a)&&((a+c>b))) {
return -1;
}
}