int和long数据类型的范围

时间:2010-04-26 04:16:48

标签: types range

我在32位窗口上学习了int和long的范围:

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

为什么int与msdn中提到的long类型相同? http://msdn.microsoft.com/en-us/library/s3f49ktz%28VS.80%29.aspx

5 个答案:

答案 0 :(得分:2)

你的前提是错的。 intlong都是32位(32位)和64位Windows。

答案 1 :(得分:1)

确切的长度不是强制性的。 强制要求的是长度不能小于int。

http://www.faqs.org/docs/learnc/x401.html

答案 2 :(得分:0)

你将int与__int16进行比较,而你的long将与__int32进行比较。

为了更有意义,您必须查看字节列。

答案 3 :(得分:0)

我认为你打算写这个:

signed int: -2147483647 to 2147483647
...

出于完全历史原因,它们是相同的。 C ++标准没有规定每种类型的特定大小,这两种类型之间的唯一保证是sizeof(int) <= sizeof(long)

答案 4 :(得分:0)

使用整数的二进制表示时,您可以根据使用公式表示数据的位数计算签名数据类型的最大范围:

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

其中N是位数。

由于某种原因,您所谈论的“signed int”类型由16位表示,“signed long”由32位表示。

另请注意,您发布的范围似乎不完整,请注意16位有符号整数的范围下降到-32768,这比您的发布范围低一个。