C++ 整型的最小尺寸
假设我想编写一个最低标准的编译器,并且我已经达到了需要实现整数类型的程度。我是否正确地假设我可以根据此表最小化积分类型的大小C++ 整型的最小尺寸,c++,C++,假设我想编写一个最低标准的编译器,并且我已经达到了需要实现整数类型的程度。我是否正确地假设我可以根据此表最小化积分类型的大小 char:标准指令sizeof(char)始终为1。因此是1字节 short:中必须至少有2个字节。因此需要2个字节 int:必须不小于short。因此需要2个字节 long:必须不小于int。因此需要2个字节 long-long:长度必须大于long。因此,如果我实现两个恭维,则为17位(即-65536到+65535):我认为这是我可以做出的选择) bool:标准不指定
char
:标准指令sizeof(char)
始终为1。因此是1字节
short
:中必须至少有2个字节。因此需要2个字节
int
:必须不小于short
。因此需要2个字节
long
:必须不小于int
。因此需要2个字节
long-long
:长度必须大于long
。因此,如果我实现两个恭维,则为17位(即-65536到+65535):我认为这是我可以做出的选择)
bool
:标准不指定尺寸。因此,1位
我知道我不需要支持std::int64\u t
及其未签名的表亲。我是否需要支持std::int32\t或者这是编译器的自由裁量权?
整数类型的实际大小因实现而异。该标准仅要求数据类型之间的大小关系以及每种数据类型的最小大小:
关系要求是long-long
不小于long
,它不小于int
,它不小于short
。由于char
的大小始终是支持的最小数据类型,因此所有其他数据类型都不能更小
char
的最小大小为8位,short
和int
的最小大小为16位,long
的最小大小为32位,long
必须至少包含64位
要获取每种类型的最大/最小号码,请调用:
#include <limits>
const int min_int = std::numeric_limits<int>::min();
const int max_int = std::numeric_limits<int>::max();
#包括
const int min_int=std::numeric_limits::min();
常量int max_int=std::numeric_limits::max();
或C解决方案:
#include <limits.h>
const int min_int = INT_MIN;
const int max_int = INT_MAX;
#包括
常数int min\u int=int\u min;
常量int max_int=int_max;
-您的需求有点偏离(链接页面适用于C,但适用于C++)。@mat:您的链接有帮助。我会删除这个问题,除非你想把它作为答案。-1,不敢相信你还不知道你的数据类型大小。这个周末读一本书;-)请阅读以下内容:,记住数据类型的大小取决于您的平台以及平台编译器上可用的climitsuite@SlodgeMonster:如果要构建标准编译器,请使用该标准作为参考。出于对{插入至高无上的选择}的热爱,不要依赖MS来引用任何东西(除了MS API之外,甚至可能不是那个)。。。这不是哈特女士,而是多年来对哈特女士傲慢的处理方式(又称忽视)标准的经验。