知識社群登入
為何要重視 int_max
by 高顯忠, 2010-12-14 06:19, 人氣(2246)
假設,我要寫 計算時間 間隔的副程式,

我必須知道,計算時間,使用 ms 做單位,
如果 時間的間隔 超過 24天,就會 over- flow
產生錯誤的結果。

或是,計算的時間間隔,跨越 24天週期的 分界線,
也是會產生錯誤的結果,而且不會有任何的

compiler 給的錯誤,或是警告的訊息。
跑程式的時候,即使發生錯誤,也不會有任何的
錯誤,或是警告訊息。

所以,一切都要靠自己。



#include <stdio.h>
#include <math.h>
#include <stdlib.h>
// ----------------------------------------------

int main()
{
int a= (int) ((pow(2, 31)) - 1 + 0.5);
printf("a= %d\n", a);
system("pause");
int b= a/1000/(1L*24*60*60);
int c= b*(1L*24*60*60)*1000;
printf("b= %d, c= %d\n", b, c);
system("pause");
return(0);
}
// ----------------------------------------------

#if 0

a= 2147483647
請按任意鍵繼續 . . .
b= 24, c= 2073600000
請按任意鍵繼續 . . .

#endif
// ----------------------------------------------

討論
編號標題回應最後發表
2687
1
0
2685
1
0