这是特定于编译器的,但是如果您使用的是gcc,则可以在发生有符号积分溢出时进行编译
-ftrapv以发出问题
SIGABRT。
例如:
#include <signal.h>#include <stdio.h>#include <limits.h>void signalHandler(int sig) { printf("Overflow detectedn");}int main() { signal(SIGABRT, &signalHandler); int largeInt = INT_MAX; int normalInt = 42; int overflowInt = largeInt + normalInt; return 0;}当我在本地运行此代码时,输出为
Overflow detectedAborted



