我在阅读《C语言核心技术》时发现了这个内容:
“如果定义了一个可选的有符号类型(没有前缀u),那么相应的无符号类型(以字母u开头)是必需的,反之亦然。”
该段落涉及到C99标准中的精确宽度整数类型。
“如果定义了一个可选的有符号类型(没有前缀u),那么相应的无符号类型(以字母u开头)是必需的,反之亦然。”
该段落涉及到C99标准中的精确宽度整数类型。
inttypes/stdint
类型的原因,C99 rationale V5.10 7.8如下所示:<inttypes.h>
的目的是提供一组整数类型,其定义在各种机器上是一致的,并且独立于操作系统和其他实现特定信息。它通过 typedef 定义了各种大小的整数类型。实现可以将它们 typedef 为标准 C 整数类型或扩展它们支持的类型。一致使用此头文件将极大地增加用户程序在平台之间的可移植性。unsigned char
/uint8_t
是 C 语言中相当于可以包含任何内容的原始数据字节。 (这就是字符类型不能包含任何陷阱表示等的原因。)