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)
如果没有,它提供什么保证?(欢迎提取标准)
如果这些类型存在,第一个是有保证的.(如果系统无法提供它们,它们可能不存在).
第二个least
是保证.以下是未签名案例的文本(签名文本类似):
typedef名称uint_leastN_t指定宽度至少为N的无符号整数类型,这样没有大小较小的无符号整数类型至少具有指定的宽度.
第三个fast
:它似乎没有完全明确,但它说:
typedef名称int_fastN_t指定宽度至少为N的最快有符号整数类型
如果我们假设这个文本是字面意思的,那么它就会给予保证; 虽然相关的脚注表明编译器有更多的自由度.然而,实现似乎不太可能像make一样fast16_t
64位,而且fast32_t
是32位.
NB.这些引用来自ISO C99,C++标准引用了这些定义.