【问题标题】:Enumerator value evaluates to -2147483648, which cannot be narrowed to type 'NSUInteger' (aka 'unsigned long')枚举器值计算为 -2147483648,不能缩小到类型“NSUInteger”(又名“无符号长”)
【发布时间】:2018-07-02 07:22:06
【问题描述】:

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

枚举器值计算为 -2147483648,不能将其缩小为类型“NSUInteger”(又名“无符号长”)

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

为什么会发生?我该如何解决?

提前谢谢你们。

【问题讨论】:

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


    【解决方案1】:

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

    (NSUInteger)1 << 31
    

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 2011-07-02
      • 2019-11-27
      • 2013-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多