为什么我会收到错误“EXEC_BAD_INSTRUCTION”:
let r = Double(arc4random_uniform(181) - 90)
虽然这工作正常:
let r = Double(arc4random_uniform(181)) - 90
在 XCode 7.1 中使用 Swift。
最佳答案
这不是一个错误,这是 Swift 的一个特性。每当您创建算术上溢或下溢时,Swift 都会故意崩溃。
每当 arc4random_uniform(181) 返回小于 90 的值并且您尝试从中减去 90 时,就会出现算术下溢。由于结果不在无符号 32 位整数的范围内,Swift 通过使程序崩溃来通知您错误。
这不是一个“Double”错误:您永远不会知道“Double”类型根本参与其中。如果不强制转换为 Double,它也会崩溃。
关于快速错误: Type Underflow: Exec_Bad_Instruction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34118314/