web-dev-qa-db-ja.com

UInt32を最大値に設定する方法

  1. UInt32の最大値は?

  2. Sizeof演算子を使用して最大値(符号なし)を取得する方法はありますか?そのため、コード内で#definesやマジックナンバーになりません。

25
Aran Mulholland

UINT32_MAXにはマクロstdint.hが定義されており、これを使用できます

#include <stdint.h>

uint32_t max = UINT32_MAX;

関連するヘッダーの詳細<stdint.h>

http://pubs.opengroup.org/onlinepubs/009695299/basedefs/stdint.h.html

44
CouchDeveloper

UInt32の最大値は_0xFFFFFFFF_(または10進数で4294967295)です。

sizeof(UInt32)は最大値を返しません。 32ビットの符号なし整数のバイト単位のサイズである4を返します。

13
liamnichols

標準の16進表記を使用して最大値を設定し、必要なものと照合します。 32ビットは16進数の8バイトなので、次のようになります。

let myMax: UInt32 = 0xFFFFFFFF

if myOtherNumber > myMax {
    // resolve problem
}
5
Ryan Dines

CまたはC++で署名されていない場合の代替手段は次のとおりです。

anUnsigned = -1;

これはすべてのユーザーに対して機能するため便利です。したがって、unsigned intからunsigned longコードを実行する必要はありません。また、これは多くの少しいじるコードで使用されています。

anUnsigned |= -(aBoolOrConditionThatWhenTrueCausesAnUnsignedToBeSetToAll1s)
anUnsigned |= -(!aValueThatWhenZeroCausesAnUnsignedToBeSetToAll1s)
anUnsigned |= -(!!aValueThatWhenNonZeroCausesAnUnsignedToBeSetToAll1s)

マイナス面は、負の数を符号なしに割り当てて、奇妙に見えることです!

2
Howard Lovatt

4.294.967.295は最大値または16進数の0xFFFFFFFFです

1
Modass

ポータブルな方法:

std::numeric_limits<uint32_t>::max()
1
Renaud