UInt32の最大値は?
Sizeof演算子を使用して最大値(符号なし)を取得する方法はありますか?そのため、コード内で#definesやマジックナンバーになりません。
UINT32_MAX
にはマクロstdint.h
が定義されており、これを使用できます
#include <stdint.h>
uint32_t max = UINT32_MAX;
<stdint.h>
:http://pubs.opengroup.org/onlinepubs/009695299/basedefs/stdint.h.html
UInt32の最大値は_0xFFFFFFFF
_(または10進数で4294967295)です。
sizeof(UInt32)
は最大値を返しません。 32ビットの符号なし整数のバイト単位のサイズである4を返します。
標準の16進表記を使用して最大値を設定し、必要なものと照合します。 32ビットは16進数の8バイトなので、次のようになります。
let myMax: UInt32 = 0xFFFFFFFF
if myOtherNumber > myMax {
// resolve problem
}
CまたはC++で署名されていない場合の代替手段は次のとおりです。
anUnsigned = -1;
これはすべてのユーザーに対して機能するため便利です。したがって、unsigned int
からunsigned long
コードを実行する必要はありません。また、これは多くの少しいじるコードで使用されています。
anUnsigned |= -(aBoolOrConditionThatWhenTrueCausesAnUnsignedToBeSetToAll1s)
anUnsigned |= -(!aValueThatWhenZeroCausesAnUnsignedToBeSetToAll1s)
anUnsigned |= -(!!aValueThatWhenNonZeroCausesAnUnsignedToBeSetToAll1s)
マイナス面は、負の数を符号なしに割り当てて、奇妙に見えることです!
4.294.967.295は最大値または16進数の0xFFFFFFFFです
ポータブルな方法:
std::numeric_limits<uint32_t>::max()