2010-04-26 108 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,这比您的发布范围低一个。