1

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

谢谢你们。

4

1 回答 1

4

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

定义允许你重用你已经定义的常量UINT_MAXINT_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)
于 2018-04-15T13:17:21.630 回答