// overflow_x64.c
#ifdef _WIN64
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <intrin.h>
int main(void)
{
while (1) // 在永真循环中测试
{
printf("输入两个整数>");
int a, b;
scanf("%d%d", &a, &b);
int sum = a + b;
unsigned long long efl = __readeflags();
printf("相加结果");
if (efl >> 11 & 1) // OF 标志位在 efl 寄存器第 11 位(最右边的一位为第 0 位)
puts("溢出!");
else
printf("为 %d。\n", sum);
}
return 0;
}
#endif // _WIN64
判断两数相加是否溢出——使用 __readeflags 函数
于 2023-05-03 10:17:31 首次发布