【发布时间】:2020-10-21 02:53:43
【问题描述】:
#include <iostream>
int main()
{
std::cout << "bool:\t\t" << sizeof(bool) << " bytes\n";
std::cout << "char:\t\t" << sizeof(char) << " bytes\n";
std::cout << "wchar_t:\t" << sizeof(wchar_t) << " bytes\n";
std::cout << "char16_t:\t" << sizeof(char16_t) << " bytes\n";
std::cout << "char32_t:\t" << sizeof(char32_t) << " bytes\n";
std::cout << "short:\t\t" << sizeof(short) << " bytes\n";
std::cout << "int:\t\t" << sizeof(int) << " bytes\n";
std::cout << "long:\t\t" << sizeof(long) << " bytes\n";
std::cout << "long long:\t" << sizeof(long long) << " bytes\n";
std::cout << "float:\t\t" << sizeof(float) << " bytes\n";
std::cout << "double:\t\t" << sizeof(double) << " bytes\n";
std::cout << "long double:\t" << sizeof(long double) << " bytes\n";
return 0;
}
这将表明 int 和 short 在 32 位系统中具有相同的大小,但为什么呢?
布尔型 1 个字节
字符 1 个字节
wchar_t 1 字节
char16_t 2 个字节
char32_t 4 字节
短 2 个字节
整数 2 个字节
长 4 个字节
long long 8 字节
浮动 4 个字节
双 8 字节
长双 8 字节
【问题讨论】:
-
您的编译器、编译器版本、目标和编译器选项是什么? (本质上是 GCC 上
-v的输出) -
在 32 位系统上不常见,但 C++ 仅保证 16 位
int。见en.cppreference.com/w/cpp/language/types#Properties -
在 32 位系统上,
wchar_t不应该是 1 字节,很少会看到 2 字节的int。您使用的是什么编译器,您的目标平台是什么?你确定你不是为 16 位编译吗?
标签: c++