我遇到了一個問題,我的小c程序。溢出不被承認,p不是打印警告
我想打印出一個警告,如果發生溢出,我正在使用limits.h庫來識別溢出與INT_MAX。 我想這個問題是我是否循環,但我真的不能找到問題...
#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
我可以」噸真的知道爲什麼警告沒有打印出來......
有些幫助將是非常感激,謝謝:)
因爲x不等於INT_MAX。這就像你寫'if(x == 5)'而x不是5你在期待什麼? – immibis
編輯我的帖子... – werther
也注意,根據定義,x不能> INT_MAX。那就是爲什麼叫INT_MAX – pm100