c++ - 整数类型的最小尺寸

标签 c++

<分区>

假设我想编写一个最小标准编译器,并且我已经到了需要实现整型的地步。我假设我可以根据此表最小化整数类型的大小是否正确?

char:标准要求 sizeof(char) 始终为 1。因此为 1 个字节。

short:必须至少有 2 个字节。因此为 2 个字节。

int:必须不小于short。因此 2 个字节。

long:必须不小于int。因此 2 个字节。

long long:必须比long长。因此 17 位(即 -65536 到 +65535)如果我实现二进制补码:我认为这是我可以做出的选择。

bool:标准不指定大小。因此 1 位。

我知道我不需要支持 std::int64_t 及其未签名的表亲。我需要支持 std::int32_t 还是编译器自行决定?

最佳答案

enter image description here

整数类型的实际大小因实现而异。标准只需要数据类型之间的大小关系和每种数据类型的最小大小:

关系要求是long long不小于longlong不小于intint不小于。由于 char 的大小始终是支持的最小数据类型,因此所有其他数据类型都不能更小。

char 的最小大小为 8 位,shortint 的最小大小为 16 位,long 是 32 位,long long 必须至少包含 64 位。


要获取每种类型的最大/最小数量,您可以调用:

#include <limits>
const int min_int = std::numeric_limits<int>::min();
const int max_int = std::numeric_limits<int>::max();

或C方案:

#include <limits.h>
const int min_int = INT_MIN;
const int max_int = INT_MAX;

关于c++ - 整数类型的最小尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034664/

相关文章:

c++ - 如何获取数组中字符串元素的字符数? [C++]

c++ - 合并排序代码调试

c++ - 创建动态分配的数组 C++

c++ - 如何在 Code::Blocks 中编译和链接图像

c++ - C++中重载运算符的引用

c++ - 创建自定义类型对象的 vector

c++ - 在 Embarcadero Tools API 中的光标位置插入文本

c++ - 涉及循环调度的代码无法运行或给出段错误(核心转储)

c++ - SDL2 无法创建窗口,因为找不到匹配的 GLX 视觉对象

安卓NDK : How to build for ARM64-v8a with minimumSdkVersion = 19