我的小 C 程序有问题。
如果发生溢出,我试图打印出警告,我正在使用limits.h库来识别INT_MAX的溢出。 我猜问题出在我的 if 循环中,但我无法真正找到问题......
#include<stdio.h>
#include<limits.h>
int main()
{
int x = 1627964;
int y = 9;
for(int i=1; i<y; ++i){
x*= i; // x= x * i
printf("%d * %d \n",x , i+1);
if(x >= INT_MAX){
printf("An Overflow has occured!\n");
return 0;
break;
}
}
}
我认为与 7 相乘后会发生溢出:
1627964 * 2
3255928 * 3
9767784 * 4
39071136 * 5
195355680 * 6
1172134080 * 7
-384996032 * 8
1214999040 * 9
我真的不知道为什么警告没有打印出来......
如果能提供一些帮助,我们将不胜感激,谢谢:)
最佳答案
只有 unsigned int 定义了溢出行为,signed int 没有,因此编译器如果检测到它可能会丢弃一半的代码。无论如何,在你的代码中 int 永远不会大于 INT_MAX 因为溢出时它应该是负值。
关于c - 无法识别溢出,p 未打印警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40750355/