ios 如何将UInt32设置为其最大值

vu8f3i0k  于 2022-11-19  发布在  iOS
关注(0)|答案(6)|浏览(375)
  1. UInt32的最大值是多少?
    1.有没有一种方法可以使用sizeof运算符来获得最大值(因为它是无符号的)?这样我就不会在代码中以#defines或幻数结束。
fd3cxomn

fd3cxomn1#

stdint.h中定义了一个宏UINT32_MAX,您可以使用它

#include <stdint.h>

uint32_t max = UINT32_MAX;

有关相关标题<stdint.h>的更多信息:

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

6ss1mwsb

6ss1mwsb2#

UInt 32的最大值为0xFFFFFFFF(或十进制的4294967295)。
sizeof(UInt32)不会返回最大值;它将返回4,即32位无符号整数的字节大小。

oipij1gg

oipij1gg3#

只需使用标准的十六进制表示法设置最大值,然后根据您的需要进行检查。32位是8个十六进制字节,因此它将如下所示:

let myMax: UInt32 = 0xFFFFFFFF

if myOtherNumber > myMax {
    // resolve problem
}
ut6juiuv

ut6juiuv4#

手提道:

std::numeric_limits<uint32_t>::max()
n3h0vuf2

n3h0vuf25#

4_294_967_295是最大值或十六进制值0xFFFFFFFF。

krcsximq

krcsximq6#

C或C++中任何无符号的替代方法是:

anUnsigned = -1;

这是很有用的,因为它适用于所有类型,所以如果你从unsigned int更改为unsigned long,你不需要检查你的代码。你也会在很多比特调整代码中看到这一点:

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

缺点是它看起来很奇怪,因为它将一个负数赋给了一个无符号的!

相关问题