UInt32 的最大值是多少?
有没有办法可以使用 sizeof 运算符来获取最大值(因为它是无符号的)?所以我的代码中不会出现#defines 或幻数。
问问题
104158 次
6 回答
74
UINT32_MAX
定义了一个宏stdint.h
,您可以在其中使用
#include <stdint.h>
uint32_t max = UINT32_MAX;
有关相关标题的更多信息<stdint.h>
:
http://pubs.opengroup.org/onlinepubs/009695299/basedefs/stdint.h.html
于 2013-11-19T11:35:56.247 回答
17
UInt32 的最大值是0xFFFFFFFF
(或十进制的 4294967295)。
sizeof(UInt32)
不会返回最大值;它将返回 4,即 32 位无符号整数的字节大小。
于 2013-11-19T11:38:22.790 回答
5
只需使用标准十六进制表示法设置最大值,然后根据您的需要进行检查。32 位是 8 个十六进制字节,所以它是这样的:
let myMax: UInt32 = 0xFFFFFFFF
if myOtherNumber > myMax {
// resolve problem
}
于 2016-09-10T14:46:54.173 回答
4
便携方式:
std::numeric_limits<uint32_t>::max()
于 2015-08-15T02:11:28.703 回答
2
4.294.967.295 是最大值或十六进制 0xFFFFFFFF
于 2013-11-19T11:36:12.933 回答
1
C 或 C++ 中任何无符号的替代方法是:
anUnsigned = -1;
这很有用,因为它适用于所有人,因此如果您从 更改为unsigned int
,unsigned long
则无需检查您的代码。您还将看到它在很多位摆弄代码中使用:
anUnsigned |= -(aBoolOrConditionThatWhenTrueCausesAnUnsignedToBeSetToAll1s)
anUnsigned |= -(!aValueThatWhenZeroCausesAnUnsignedToBeSetToAll1s)
anUnsigned |= -(!!aValueThatWhenNonZeroCausesAnUnsignedToBeSetToAll1s)
缺点是它看起来很奇怪,将负数分配给无符号!
于 2016-06-16T06:02:09.683 回答