Xcode抱怨以下行:
let primary = UInt32(0x8BC34AFF)
Run Code Online (Sandbox Code Playgroud)
有这个错误消息:
Integer literal '2344831743' overflows when stored into 'Int'
Run Code Online (Sandbox Code Playgroud)
我看到它溢出了一个有符号整数,但我故意使用了UInt32.我的问题更多的是"这怎么可能"而不是"我该如何修复它".
vac*_*ama 27
UInt32(0x8BC34AFF)UInt32通过调用初始化程序创建一个.UInt32您调用的初始化程序是:
init(_ v: Int)
Run Code Online (Sandbox Code Playgroud)
问题是在32位设备(iPhone5和更早版本)上,类型Int是32位.所以,你传递的常量会0x8BC34AFF溢出Int你传递给初始化器的那个UInt32.
在32位和64位设备上使用此方法的方法是将整数文字转换为以下类型:
let primary = 0x8BC34AFF as UInt32
Run Code Online (Sandbox Code Playgroud)
或者,将变量声明为UInt32并且只分配常量:
let primary:UInt32 = 0x8BC34AFF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7511 次 |
| 最近记录: |