我想知道是否有特殊原因将宏定义UINT_MAX
为头文件中的真实值,(2147483647 * 2U + 1U)
而不是直接定义它的真实值。(4294967295U)
climits
谢谢你们。
我想知道是否有特殊原因将宏定义UINT_MAX
为头文件中的真实值,(2147483647 * 2U + 1U)
而不是直接定义它的真实值。(4294967295U)
climits
谢谢你们。
就编译后的代码而言,没有区别,因为编译器会评估两个常量表达式以在编译时产生相同的值。
定义允许你重用你已经定义的常量UINT_MAX
:INT_MAX
#define UINT_MAX (INT_MAX * 2U + 1U)
事实上,这正是clang 的标头所做的__INT_MAX__
,为INT_MAX
和重用了一个内部常量UINT_MAX
:
#define INT_MAX __INT_MAX__
#define UINT_MAX (__INT_MAX__ *2U +1U)