枚举器值计算为-2147483648,不能缩小为“ NSUInteger”类型(又名“ unsigned long”)

时间:2018-07-02 07:22:06

标签: objective-c xcode enums long-integer unsigned

我有一个枚举,每种类型都左移了1 << type,但是今天我添加了一个新类型,即31 << atype,不幸的是,Xcode给了我错误

  

枚举器值计算为-2147483648,不能缩小为“ NSUInteger”类型(又名“ unsigned long”)

enter image description here

表示该值超出了unsigned long值的最大值。我想知道我从未遇到过这种情况。

为什么会发生?我该怎么解决?

提前谢谢你们。

1 个答案:

答案 0 :(得分:0)

这是因为文字常量1是NSInteger类型的,这意味着第一个字节确定值的符号。您需要做的就是将其转换为NSUInteger,所以:

(NSUInteger)1 << 31