C++标准是否保证:
sizeof(uint8_t) <= sizeof(uint16_t) <= sizeof(uint32_t) <= sizeof(uint64_t)
sizeof(uint_least8_t) <= sizeof(uint_least16_t) <= sizeof(uint_least32_t) <= sizeof(uint_least64_t)
sizeof(uint_fast8_t) <= sizeof(uint_fast16_t) <= sizeof(uint_fast32_t) <= sizeof(uint_fast64_t)如果没有,它提供了什么保证?(欢迎从标准中摘录)
发布于 2015-12-06 21:41:33
第一种是有保证的,当且仅当这些类型存在。(如果系统无法提供它们,则它们可能不存在)。
第二个,least,是有保证的。以下是未签名情况的文本(签名文本类似):
typedef名称uint_leastN_t指定宽度至少为N的无符号整数类型,这样大小较小的无符号整数类型都不具有至少指定的宽度。
第三个,fast:它似乎没有被精确地指定,但是它说:
int_fastN_t指定宽度至少为N的最快的有符号整数类型。
如果我们假设这个文本是字面意义上的,那么它就会提供保证;尽管相关的脚注表明编译器有更大的自由度。尽管如此,一个实现似乎不太可能做一些事情,比如让fast16_t是64位,fast32_t是32位。
注意:这些引号来自于C99,C++标准对这些定义进行了引用。
https://stackoverflow.com/questions/34123006
复制相似问题