為何要重視 int_max
by 高顯忠, 2010-12-14 06:19, Views(2595)
假設,我要寫 計算時間 間隔的副程式,
我必須知道,計算時間,使用 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
// ----------------------------------------------