整数溢出在Swift中给出了EXC_BAD_INSTRUCTION

在处理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错误。这是错误还是什么?通常我希望它会溢出。

回答:

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

  • 溢流加法(&+
  • 溢出减法(&-
  • 溢出乘法(&*

以上是 整数溢出在Swift中给出了EXC_BAD_INSTRUCTION 的全部内容, 来源链接: utcz.com/qa/401632.html

回到顶部