为什么短int和int在32位体系结构中具有相同的大小

  • 本文关键字:int 体系结构 32位 c++
  • 更新时间 :
  • 英文 :

#include <iostream>

int main()
{
std::cout << "bool:tt" << sizeof(bool) << " bytesn";
std::cout << "char:tt" << sizeof(char) << " bytesn";
std::cout << "wchar_t:t" << sizeof(wchar_t) << " bytesn";
std::cout << "char16_t:t" << sizeof(char16_t) << " bytesn";
std::cout << "char32_t:t" << sizeof(char32_t) << " bytesn";
std::cout << "short:tt" << sizeof(short) << " bytesn";
std::cout << "int:tt" << sizeof(int) << " bytesn";
std::cout << "long:tt" << sizeof(long) << " bytesn";
std::cout << "long long:t" << sizeof(long long) << " bytesn";
std::cout << "float:tt" << sizeof(float) << " bytesn";
std::cout << "double:tt" << sizeof(double) << " bytesn";
std::cout << "long double:t" << sizeof(long double) << " bytesn";

return 0;
}

这将表明int和short在32位系统中具有相同的大小,但为什么呢?bool 1字节
char 1字节
wchar_t 1字节
char16_t 2字节
char32_t 4字节
short 2字节
int 2字节
long 4字节
long long 8字节
float 4字节
double 8字节

为什么短int和int在32位体系结构中具有相同的大小?

问问自己:为什么它们的大小不应该相同?语言标准为两种类型的范围指定了相同的最小限制,并允许它们具有相同的大小。在某些语言实现中就是这样。

请注意,并非所有语言实现(无论是否为32位(都是如此,而且在某些语言实现(例如x86 CPU架构上的语言实现(上,大小确实不同。

语言定义对整型的大小和相对大小提出了一些要求。该标准不关心32位系统、64位系统或其他任何可能的系统。

尺寸要求为:

char -- at least 8 bits
short -- at least 16 bits
int -- at least 16 bits
long -- at least 32 bits
long long -- at least 32 bits

相对大小要求是,在上面的列表中,每个类型必须至少与其前面的类型一样大。(因此,例如,如果short是32位,则int必须至少是32位(。

因此,就语言定义而言,shortint当然可以是相同的大小。在许多系统中都是这样。

最新更新