当我分配i
时值大于INT_MAX
在此代码中 -
#include <stdio.h>
#include <limits.h>
int main()
{
int i;
i=INT_MAX+3;
printf("%d \n",INT_MAX); //INT_MAX = 2147483647
if(i>INT_MAX)
{
printf("OVERFLOW");
}
else
{
printf("%d",i);
}
return 0;
}
所以在此为 i=INT_MAX+3;
那么条件为真且 overflow
应该打印,但它打印一些 negative value
。这是未定义的行为吗?
最佳答案
是的,有符号整数溢出在 C 中具有未定义的行为。
i > INT_MAX
对于任何int i
来说都不是真的。如何使int
大于可能的最大int
?
关于c - 故意分配大于 INT_MAX 的 `i` 值时出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31627074/