在C中使用uint8_t优于unsigned char的优势是什么?
我知道在几乎每个系统uint8_t只是一个类型定义的unsigned char, 那么为什么要用它呢?
在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。