C中的整数溢出和数字错误防御

C中的整数溢出和数字错误防御,c,integer,overflow,C,Integer,Overflow,我正试图研究C语言中的各种整数溢出场景,我想知道C语言是否提供了针对数字错误的防御措施,以及C语言中是否有其他类或库可以提供帮助?还有,谁能给我举一个在C语言中导致整数溢出的代码例子吗?不,没有防御措施 这溢出: #include <limits.h> #include <stdio.h> const int a = INT_MAX - 2; const int b = INT_MAX - 2; printf("%d + %d = %d\n", a, b, a + b)

我正试图研究C语言中的各种整数溢出场景,我想知道C语言是否提供了针对数字错误的防御措施,以及C语言中是否有其他类或库可以提供帮助?还有,谁能给我举一个在C语言中导致整数溢出的代码例子吗?

不,没有防御措施

这溢出:

#include <limits.h>
#include <stdio.h>

const int a = INT_MAX - 2;
const int b = INT_MAX - 2;
printf("%d + %d = %d\n", a, b, a + b);
#包括
#包括
常数int a=int_MAX-2;
常数int b=int_MAX-2;
printf(“%d+%d=%d\n”,a、b、a+b);

当我测试它时,它打印了-6,但我想任何事情都可能发生。

没有防御措施,溢出发生了,这就是全部(两倍)。注意,C中不仅有(无符号)int,例如还有(无符号)long-long。您需要的最小/最大值和操作是什么?顺便问一下,为什么您“研究C中的各种整数溢出场景”?好奇?还是有一些潜在的问题需要解决?如果您还有其他问题,请直接询问。“还有,有人能给我一个在C中导致整数溢出的代码示例吗?”您正在“尝试研究C中的各种整数溢出场景”,但您无法给出自己在C中的整数溢出示例?“C中导致整数溢出的代码示例?“-->
INT_MAX+1
当值在编译时已知时,编译器可能会警告您溢出,尽管大多数编译器仍然会返回
-6
,如果它们仍然需要返回某些内容。但是,如果编译器认为
a
b
均为正,则
a+b
将被视为正。