Ios 如何将UInt32设置为&x27;s最大值
UInt32的最大值是多少Ios 如何将UInt32设置为&x27;s最大值,ios,objective-c,uint32,Ios,Objective C,Uint32,UInt32的最大值是多少 有没有一种方法可以使用sizeof运算符获得最大值(因为它是无符号的)?因此,我不会在代码中使用#定义或幻数 在stdint.h中定义了一个宏UINT32\u MAX,您可以使用它 #include <stdint.h> uint32_t max = UINT32_MAX; #包括 uint32_t max=uint32_max; 有关相关标题的更多信息: 4.294.967.295是最大值或十六进制0xFFFFFFUInt32的最大值是0xFFF
在
stdint.h
中定义了一个宏UINT32\u MAX
,您可以使用它
#include <stdint.h>
uint32_t max = UINT32_MAX;
#包括
uint32_t max=uint32_max;
有关相关标题的更多信息
:
4.294.967.295是最大值或十六进制0xFFFFFFUInt32的最大值是
0xFFFFFF
(或4294967295十进制)
sizeof(UInt32)
不会返回最大值;它将返回4,即32位无符号整数的字节大小。可移植方式:
std::numeric_limits<uint32_t>::max()
std::numeric\u limits::max()
< /代码> C或C++中任何无符号的替代方案是:
anUnsigned = -1;
这是很有用的,因为它适用于所有类型,因此如果您从无符号int
更改为无符号long
,则无需检查代码。您还将在许多位篡改代码中看到这一点:
anUnsigned |= -(aBoolOrConditionThatWhenTrueCausesAnUnsignedToBeSetToAll1s)
anUnsigned |= -(!aValueThatWhenZeroCausesAnUnsignedToBeSetToAll1s)
anUnsigned |= -(!!aValueThatWhenNonZeroCausesAnUnsignedToBeSetToAll1s)
缺点是它看起来很奇怪,给一个未签名的字符分配一个负数 只需使用标准十六进制表示法设置最大值,然后根据需要进行检查。32位是8个十六进制字节,所以它是这样的:
let myMax: UInt32 = 0xFFFFFFFF
if myOtherNumber > myMax {
// resolve problem
}
那不是2^32-1
?该死的,你以前很友好。这是一个合理的问题,为什么所有的反对票?仇恨者开始仇恨,但我希望他们能在其他地方这样做。(uint32_t)0-1;-)您已经有了我的支持票,但如果您再列出一些类似于MAXFLOAT和类似的宏,对未来的用户可能会有所帮助。@0x7fffffff您应该仔细看看。实际上有几十个宏定义了所有有符号和无符号整数类型的最小值、最大值以及其他一些宏。这些都是在中定义的。谢谢,这正是我想要的。谢谢,我想也许你可以对它做一些简单的算术(sizeof(UInt32)*8)^2。有点过分了,我问的时候有点困了。为什么这个更便携?与一些硬编码的值相比更便携。也许uint32\t不是一个很好的例子。如果以std::numeric_limits为例,则不必假设有符号数字在计算机上的编码方式。如果采用std::numeric_限制,则不会对int的大小做出任何假设,int的大小可能不总是32位,具体取决于目标硬件。它也比宏灵活一些。如果您需要更改类型,例如通过Type,您不必更新代码中所有的UTI32 32最大类宏。这个答案是C++代码,但问题是关于IOS上的目标C。有时这样做会导致编译器警告或静态分析警告,因为它工作得很好,所以很遗憾。