Types int和long数据类型的范围

Types int和long数据类型的范围,types,range,Types,Range,我了解到在32位windows上int和long的范围是: signed int: -32767 to 32767 signed long: -2147483647 to 2147483647 为什么int与msdn中提到的long类型具有相同的范围? 不强制要求精确长度。 规定的是long不能小于int 您的int将与u int16进行比较,而您的long将与u int32进行比较 您必须查看Bytes列才能更清楚地理解这一点。我想您是想写这个: signed int: -214748364

我了解到在32位windows上int和long的范围是:

signed int: -32767 to 32767
signed long: -2147483647 to 2147483647
为什么int与msdn中提到的long类型具有相同的范围?
不强制要求精确长度。 规定的是long不能小于int


您的int将与u int16进行比较,而您的long将与u int32进行比较


您必须查看Bytes列才能更清楚地理解这一点。

我想您是想写这个:

signed int: -2147483647 to 2147483647
...

完全出于历史原因,它们是相同的。C++标准并没有为每种类型指定一个特定的大小,这两种类型之间唯一的保证是 sieZoof(int)您的前提是错误的。code>int和
long
在32位和64位窗口上都是32位的。

使用整数的二进制表示时,可以使用以下公式根据用于表示数据的位数计算有符号数据类型的最大范围:

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

其中N是位数

出于这样或那样的原因,“有符号的int”类型由16位表示,“有符号的long”由32位表示


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

@n00b8688:您的意思是-32768到32767和-2147483648到2147483647?我的意思是msdn上的带符号整数-2147483648到2147483647。+1:64位Windows使用LLP64型号,而文明世界在64位Linux等上使用LP64。@保罗,我不同意这一点。