2010-04-26 146 views
2

的範圍我學到的int和長範圍在32位Windows:int和長數據類型

signed int: -32767 to 32767 
signed long: -2147483647 to 2147483647 

爲什麼整型具有相同的範圍內,只要型MSDN上提到? http://msdn.microsoft.com/en-us/library/s3f49ktz%28VS.80%29.aspx

+0

@ n00b8688:你的意思是-32768到32767和-2147483648到2147483647? – SyntaxT3rr0r 2010-04-26 04:51:07

+0

我的意思是msdn上的signed int -2,147,483,648到2,147,483,647。 – n00b8688 2010-04-26 05:01:00

回答

0

我假設你的意思是這樣寫:

signed int: -2147483647 to 2147483647 
... 

他們是完全歷史的原因相同。 C++標準沒有爲每種類型規定特定的尺寸,這兩種類型之間唯一的保證是sizeof(int) <= sizeof(long)

0

您詮釋會比較的__int16,而你的長會比較__int32。

您必須查看字節列,以便更有意義。

2

你的前提是錯誤的。 intlong在32位和64位Windows上都是32位。

+0

+1:64位Windows使用LLP64模型,而文明世界使用64位Linux等的LP64。 – 2010-04-26 08:06:34

+1

@Paul,我不同意[LP64必然會更好](http://blogs.msdn.com/oldnewthing/archive/2005/01/31/363790.aspx)。 – 2010-04-26 09:09:42

0

當與的整數的二進制表示工作,就可以計算基於用於使用公式來表示數據的位的數目簽名的數據類型的最大範圍:

最低值:-2 ^(N-1 ) 最高值:2 ^(N-1) - 1

其中N是比特數。

由於某種原因,您所談論的「signed int」類型由16位表示,「signed long」由32位表示。

另請注意,您發佈的範圍似乎不完整,請注意16位帶符號整數的範圍下降到-32768,這比您的發佈範圍低一個。