我注意到整数和多头都有相同的大小.为什么?

Dan*_*iel 7 c++

刚刚在OSX上注意到这一点,我发现它很好奇,因为我预计长期比int更大.有没有什么好的理由让它们大小相同?

Tom*_*Tom 14

这是C和C++语言规范中大小定义松散的结果.我相信C具有特定的最小尺寸,但C++中唯一的规则是:

1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
Run Code Online (Sandbox Code Playgroud)

此外,sizeof(int)sizeof(long)不能在所有平台上相同的大小.我使用的每个64位平台都long符合自然字大小,32位架构上为32位,64位架构上为64位.

  • Afaik windows 64位是一个例外.它是LLP64,所以有长= 32位和长64位.这取决于你认为更重要的实现者,保持sizeof(long)= sizeof(指针)或假定sizeof(long)= sizeof(int)的救援代码.MS选择了最后一个. (3认同)

D.S*_*ley 8

  • int本质上是最方便有效的整数类型
  • long是/是最大的整数类型
  • short最小的整数类型

如果最长的整数类型也是最有效的,int则与之相同long.不久之前(想想32位之前),sizeof(int) == sizeof(short)在16位以上的多个平台上是最宽的自然整数.