UINT_MAX 宏的定义

definition of UINT_MAX macro

我想知道是否有特殊原因将宏 UINT_MAX 定义为 (2147483647 * 2U + 1U) 而不是直接在 climits 中将其真实值 (4294967295U) header 文件.

谢谢大家

就编译后的代码而言,没有区别,因为编译器会在编译时计算两个常量表达式以产生相同的值。

根据 INT_MAX 定义 UINT_MAX 可让您重用已定义的常量:

#define UINT_MAX (INT_MAX * 2U + 1U)

事实上,这就是 clang's header does,为 INT_MAXUINT_MAX 重新使用内部常量 __INT_MAX__:

#define INT_MAX   __INT_MAX__
#define UINT_MAX  (__INT_MAX__  *2U +1U)