开发者

What's a portable value for UINT_MIN?

开发者 https://www.devze.com 2023-01-11 16:47 出处:网络
In limits.h, there are #defines for INT_MAX and INT_MIN (and SHRT_* and LONG_* and so on)开发者_运维问答, but only UINT_MAX.

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?


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:

6.2.6.2 Integer types

  1. For unsigned integer types other than unsigned char, the bits of the object representation shall be divided into two groups: value bits and padding bits (there need not be any of the latter). If there are N value bits, each bit shall represent a different power of 2 between 1 and 2^(N−1), so that objects of that type shall be capable of representing values from 0 to 2^(N−1) using a pure binary representation; this shall be known as the value representation. The values of any padding bits are unspecified.


You could use std::numeric_limits<unsigned int>::min().


If you want to be "typesafe" you could use 0U, so if you use it in an expression you will have the correct promotions to unsigned.

0

精彩评论

暂无评论...
验证码 换一张
取 消