在C中使用uint8_t优于unsigned char的优势是什么?

我知道在几乎每个系统uint8_t只是一个类型定义的unsigned char, 那么为什么要用它呢?


当前回答

就像你说的,“几乎每个系统”。

Char可能是一个不太可能改变的,但一旦你开始使用uint16_t和朋友,使用uint8_t混合更好,甚至可能成为编码标准的一部分。

其他回答

这一点非常重要,例如当你在编写网络分析器时。 数据包头是由协议规范定义的,而不是由特定平台的C编译器的工作方式定义的。

关键在于编写与实现无关的代码。Unsigned char不能保证是8位类型。Uint8_t是(如果可用)。

它记录了你的意图——你将存储小数字,而不是一个字符。

此外,它看起来更好,如果你使用其他类型,如uint16_t或int32_t。

就像你说的,“几乎每个系统”。

Char可能是一个不太可能改变的,但一旦你开始使用uint16_t和朋友,使用uint8_t混合更好,甚至可能成为编码标准的一部分。

在几乎每个系统上,我都遇到了uint8_t == unsigned char,但这不是由C标准保证的。如果你试图编写可移植的代码,它的确切大小是什么内存,使用uint8_t。否则使用unsigned char。