UINT_MIN 的可移植值是什么?
在 limits.h
中,有 INT_MAX
和 INT_MIN
(以及 SHRT_* 和 LONG_* 等)的 #define,但只有 >UINT_MAX
。
我应该自己定义 UINT_MIN
吗? 0
(正零)是可移植值吗?
In limits.h
, there are #defines for INT_MAX
and INT_MIN
(and SHRT_* and LONG_* and so on), but only UINT_MAX
.
Should I define UINT_MIN
myself? Is 0
(positive zero) a portable value?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
它是一个无符号整数 - 根据定义,它的最小可能值为 0。如果您除了常识之外还需要一些理由,标准 说:
It's an unsigned integer - by definition its smallest possible value is 0. If you want some justification besides just common sense, the standard says:
您可以使用 std::numeric_limits::min()。
You could use
std::numeric_limits<unsigned int>::min()
.如果您想要“类型安全”,您可以使用
0U
,因此,如果您在表达式中使用它,您将获得正确的提升为unsigned
。If you want to be "typesafe" you could use
0U
, so if you use it in an expression you will have the correct promotions tounsigned
.