2011-09-12 104 views
2

可能重複:
What is the difference between an int and a long in C++?
difference in long vs int data types in C++int和long有什麼區別?

在C++中這是int和長數據類型之間的性差異。寫了下面的代碼:

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    cout<<"Int_Max = "<<INT_MAX<<endl; 
    cout<<"Int_Min = "<<INT_MIN<<endl; 
    cout<<"Long_Max = "<<LONG_MAX<<endl; 
    cout<<"Long_Min = "<<LONG_MIN<<endl; 
} 

而且是這樣的結果...

Int_Max = 2147483647 
Int_Min = -2147483648 
Long_Max = 2147483647 
Long_Min = -2147483648 

我很困惑。

+5

看不到哪裏提升和遊戲編程適合? –

+2

或者遊戲編程。 –

+0

回答之前:[Link1](http://stackoverflow.com/questions/900230/difference-in-long-vs-int-data-types-in-c)[Link2](http://stackoverflow.com/問題/ 271076/int-and-a-long-in-c之間的區別) – SpeedBirdNine

回答

4

根據該標準,int保證至少爲16位,並且long至少爲32位。在大多數32位編譯器中,它們都是相同的,均爲32位。但是你不應該指望這一點,因爲有64位,16位甚至8位編譯器。

+0

該標準還保證char <= short <= int <= long的大小。有趣的是,該標準並沒有強制要求8位字符,只是字符至少爲8位。 char可能有9位的大小,這意味着你有9位的字節。 –

3

在32位系統上,intlong之間通常沒有區別。如果您需要32位系統上的64位數據類型,請嘗試使用long long

0

炭:至少8位:等於一個單位

短:至少16位:至少一樣寬的炭

INT:至少16位:至少一樣寬的短

長:至少32位:寬度至少爲INT

1

如果你要保證你的數據類型的大小,你應該在cstdint使用類型(需要的C++ 0x用g ++的支持,這通過用-std = C++ 0x編譯來打開)。例如,而不是int或long,你可以使用int32_t和int64_t。如果你想要一個無符號數據類型,只需在開頭添加一個'u'。 uint16_t可能等於您平臺上的無符號短小。這是一個16位無符號整數。

但是,您應該只在確切空間很重要的地方使用這些。否則,「int」通常是優選的。

有關更完整的參考資料,請參見https://en.wikipedia.org/wiki/Stdint.h其中包含其他選項,例如int_least16_t,用於至少包含16位寬的數據類型。

+0

+2如果我可以:-) – Valmond

相關問題