NSNumber能够存储的最大值是多少?
// ok
NSNumber *value = @(1 << 31);
// gives compiler error, so max NSNumber is 32-bit uint?
NSNumber *value = @(1 << 32);
1 << 32
中的1
是一个 int 类型,编译器在执行移位时使用它。由于 int 类型是 32 位的,因此您无法将其移动 32 个位置。如果您使用了@(1ULL << 32)
,它将有效,因为1ULL
的类型是 unsigned long long。 - ughoavgfhw