最近要寫一些C程式處理大筆資料,有點擔心會整數溢位。
寫了個C程式試了下,發現很有意思的事
在AMD CPU 32bit Athlon gcc 4.1.2 傳回
bytes: char:1, int:4, long:4, unsign:4, unsign long:4, long long: 8
AMD 64bit Athlon gcc 4.1.2 傳回
bytes: char:1, int:4, long:8, unsign:4, unsign long:8, long long: 8
Sun Ultra sprac III (64 bit CPU) gcc 3.4.4 傳回
bytes: char:1, int:4, long:4, unsign:4, unsign long:4, long long: 8
看起來Sun 這版gcc 還停在 32 bit
其實一般應用 32 bit signed 整數(-2,147,483,648 到 2,147,483,647)已經蠻夠了。要省空間就用 short int 或 char
short int (2)
-32,768 to 32,767
(K& R 說是 -32,767)
unsigned int (4)
0 to 4,294,967,295
int (4)
-2,147,483,648 to 2,147,483,647
(K& R 說是 -2,147,483,647)
char (1)
256 character values
float (4)
1.2e-38 to 3.4e38
double (8)
2.2e-308 to 1.8e308
1 則留言:
這與 programming model 有關,可參考:
http://blog.linux.org.tw/~jserv/archives/001639.html
張貼留言