10

には、 and (および SHRT_* と LONG_* など) のlimits.h#defines がありますが、 .INT_MAXINT_MINUINT_MAX

私はUINT_MIN自分自身を定義する必要がありますか?0(正のゼロ) は移植可能な値ですか?

4

3 に答える 3

19

これは符号なし整数です。定義により、可能な限り小さい値は 0 です。常識以外の理由が必要な場合、標準では次のように述べられています。

6.2.6.2 整数型

  1. 以外の符号なし整数型の場合unsigned char、オブジェクト表現のビットは、値ビットとパディング ビットの 2 つのグループに分けられます (後者のいずれかが存在する必要はありません)。N 個の値のビットがある場合、各ビットは 1 から 2^( N −1) までの異なる 2 の累乗を表すため、そのタイプのオブジェクトは、以下を使用して 0 から 2^( N −1)までの値を表すことができます。純粋なバイナリ表現; これは、値表現として知られるものとします。パディング ビットの値は指定されていません。
于 2010-08-17T04:25:56.467 に答える
7

を使用できますstd::numeric_limits<unsigned int>::min()

于 2010-08-17T04:56:32.177 に答える
2

「タイプセーフ」にしたい場合は0Uを使用できるため、式で使用すると、 への正しいプロモーションが行われunsignedます。

于 2010-08-17T09:33:55.250 に答える