UInt32的最大值是什么?
有没有办法可以使用sizeof运算符来获取最大值(因为它是无符号的)?所以我的代码中最终没有#defines或魔术数字。
答案 0 :(得分:43)
UINT32_MAX
中定义的宏stdint.h
可以使用
#include <stdint.h>
uint32_t max = UINT32_MAX;
<stdint.h>
的更多信息:http://pubs.opengroup.org/onlinepubs/009695299/basedefs/stdint.h.html
答案 1 :(得分:11)
UInt32的最大值为0xFFFFFFFF
(或十进制的4294967295)。
sizeof(UInt32)
不会返回最大值;它将返回4,即32位无符号整数的字节大小。
答案 2 :(得分:5)
只需使用标准十六进制表示法设置最大值,然后根据您的需要进行检查。 32位是8个十六进制字节,所以它是这样的:
let myMax: UInt32 = 0xFFFFFFFF
if myOtherNumber > myMax {
// resolve problem
}
答案 3 :(得分:1)
便携式方式:
std::numeric_limits<uint32_t>::max()
答案 4 :(得分:1)
C或C ++中任何未签名的替代方法是:
anUnsigned = -1;
这很有用,因为它适用于所有人,所以如果您从unsigned int
更改为unsigned long
,则不需要查看代码。你也会看到这个用在很多小小的代码中:
anUnsigned |= -(aBoolOrConditionThatWhenTrueCausesAnUnsignedToBeSetToAll1s)
anUnsigned |= -(!aValueThatWhenZeroCausesAnUnsignedToBeSetToAll1s)
anUnsigned |= -(!!aValueThatWhenNonZeroCausesAnUnsignedToBeSetToAll1s)
缺点是它看起来很奇怪,为无符号分配负数!
答案 5 :(得分:0)
4.294.967.295是最大值或十六进制0xFFFFFFFF