所以我有一个任务是在添加两个 int32_t 数字时检查溢出。如果发生溢出,我的函数必须返回最大或最小 int32_t 数,具体取决于溢出的符号,但使用 UINT32_MAX 等常量是受限制的。我怎么做?如果对您有帮助,请参考以下代码:
#include "inttypes.h"
int32_t
satsum(int32_t v1, int32_t v2) {
int32_t res = 0;
if(__builtin_sadd_overflow(v1, v2, &res)) {
if (res < 0) {
return ?
}
return ?
} else {
res = v1 + v2;
return res;
}
}