在中,和(以及 SHRT_* 和 LONG_* 等)limits.h
有 #defines ,但只有.INT_MAX
INT_MIN
UINT_MAX
我应该定义UINT_MIN
自己吗?(正0
零)是可移植值吗?
在中,和(以及 SHRT_* 和 LONG_* 等)limits.h
有 #defines ,但只有.INT_MAX
INT_MIN
UINT_MAX
我应该定义UINT_MIN
自己吗?(正0
零)是可移植值吗?
它是一个无符号整数 - 根据定义,它的最小可能值为 0。如果您除了常识之外还需要一些理由,标准说:
6.2.6.2 整数类型
- 对于除 之外的无符号整数类型
unsigned char
,对象表示的位应分为两组:值位和填充位(后者不需要任何一个)。如果有N个值位,每个位应表示 1 和 2^( N -1) 之间的 2 的不同幂,因此该类型的对象应能够表示从 0 到 2^( N -1) 的值,使用纯二进制表示;这应称为值表示。未指定任何填充位的值。
你可以使用std::numeric_limits<unsigned int>::min()
.
如果您想成为“类型安全”,您可以使用0U
,因此如果您在表达式中使用它,您将对unsigned
.