C99 标准引入了以下数据类型。可以在 此处 找到 AVR stdint 库的文档。
uint8_t
表示它是一个 8 位无符号类型。uint_fast8_t
表示它是最快的无符号整数,至少有 8 位。uint_least8_t
表示它是一个至少有 8 位的无符号整数。
我了解 uint8_t
以及 uint_fast8_t
是什么(我不知道它是如何在寄存器级别实现的)。
1.你能解释一下“它是一个 unsigned int
至少有 8 位”是什么意思吗?
2. 与 — 相比, uint8_t
uint_fast8_t
和 uint_least8_t
帮助提高效率/代码空间?
原文由 mic 发布,翻译遵循 CC BY-SA 4.0 许可协议
uint_least8_t
是至少有 8 位的最小类型。uint_fast8_t
是最快的类型,至少有 8 位。您可以通过想象异国情调的架构来看到差异。想象一个 20 位架构。它的
unsigned int
有20位(一个寄存器),它的unsigned char
有10位。所以sizeof(int) == 2
,但是使用char
类型需要额外的指令来将寄存器减半。然后:uint8_t
:未定义(无 8 位类型)。uint_least8_t
:是unsigned char
,最小的类型,至少是 8 位。uint_fast8_t
: 是unsigned int
,因为在我想象的架构中,半寄存器变量比全寄存器变量慢。