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_MAX
和 UINT_MAX
重新使用内部常量 __INT_MAX__
:
#define INT_MAX __INT_MAX__
#define UINT_MAX (__INT_MAX__ *2U +1U)
我想知道是否有特殊原因将宏 UINT_MAX
定义为 (2147483647 * 2U + 1U)
而不是直接在 climits
中将其真实值 (4294967295U)
header 文件.
谢谢大家
就编译后的代码而言,没有区别,因为编译器会在编译时计算两个常量表达式以产生相同的值。
根据 INT_MAX
定义 UINT_MAX
可让您重用已定义的常量:
#define UINT_MAX (INT_MAX * 2U + 1U)
事实上,这就是 clang's header does,为 INT_MAX
和 UINT_MAX
重新使用内部常量 __INT_MAX__
:
#define INT_MAX __INT_MAX__
#define UINT_MAX (__INT_MAX__ *2U +1U)