7

在玩弄 Swift 时,我注意到当 64 位整数溢出时,我收到以下错误:

file:///Users/user/Documents/playground/MyPlayground.playground/:错误:游乐场执行中止:执行被中断,原因:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)。

func fibonacci(which: Int) -> (fibOf: Int, isEqualTo: Int) {
    var i = 1, j = 1

    for var k = 2; k < which; k += 1 {
        let tmp = i + j // this line is highlighted when error occurs
        j = i
        i = tmp
    }

    return (which, i)
}

print (fibonacci(92))
print (fibonacci(93)) // this triggers an error

第一次调用,即以 92 作为参数,将运行良好。然而,当提供 93 值时,我得到了不相关的 EXC_BAD_INSTRUCTION 错误。这是一个错误还是什么?通常我希望它会溢出。

4

1 回答 1

11

这是预期的行为。如果要溢出,则需要使用溢出运算符

  • 溢出加法 ( &+)
  • 溢出减法 ( &-)
  • 溢出乘法 ( &*)
于 2015-07-14T21:22:12.967 回答