我有一个枚举,每种类型都左移了1 << type
,但是今天我添加了一个新类型,即31 << atype
,不幸的是,Xcode给了我错误
枚举器值计算为-2147483648,不能缩小为“ NSUInteger”类型(又名“ unsigned long”)
表示该值超出了unsigned long
值的最大值。我想知道我从未遇到过这种情况。
为什么会发生?我该怎么解决?
提前谢谢你们。
答案 0 :(得分:0)
这是因为文字常量1
是NSInteger类型的,这意味着第一个字节确定值的符号。您需要做的就是将其转换为NSUInteger,所以:
(NSUInteger)1 << 31