当前位置: 首页 > 面试题库 >

整数溢出在Swift中给出了EXC_BAD_INSTRUCTION

通鸿风
2023-03-14
问题内容

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


问题答案:

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

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


 类似资料:
  • 虚拟机安装:Ubuntu 12.04(x86) 什么是整数溢出? 存储大于最大支持值的值称为整数溢出。整数溢出本身不会导致任意代码执行,但整数溢出可能会导致堆栈溢出或堆溢出,这可能导致任意代码执行。在这篇文章中,我将仅谈论整数溢出导致堆栈溢出,整数溢出导致堆溢出将在后面的单独的帖子中讨论。 数据类型大小及范围: 当我们试图存储一个大于最大支持值的值时,我们的值会被包装 。例如,当我们尝试将存储到带

  • 我在一次采访中被问及这一点。我被要求计算数字x1,x2,x3,…的平均值,。。。xn公司 //所以归结起来是这样的: 面试官说列表的大小是未知的,它可能很大,所以总和可能会溢出。他问我如何解决溢出问题,我的回答是跟踪我们可能超过最大数量的次数等等,他说了一些关于推入堆栈、平均值和长度的事情,我从来没有真正理解他的解决方案,将这两个变量推入某种列表中?有人知道吗?

  • 本文向大家介绍C#整数溢出,包括了C#整数溢出的使用技巧和注意事项,需要的朋友参考一下 示例 整数可以存储的最大容量。而当您超过该限制时,它将循环回到负面。对于int,它是2147483647 对于超出此范围的所有整数,请使用System.Numerics数据类型为BigInteger的名称空间。检查下面的链接以获取更多信息https://msdn.microsoft.com/zh-cn/libr

  • 问题内容: Python 2有两个整数数据类型和,并在必要时自动在它们之间进行转换,尤其是为了避免整数溢出。 我正在Python中模拟C函数,并且想知道是否存在重新启用整数溢出的标准方法。对于随机数,我已经使用 有没有更标准的方式来做同样的事情? 问题答案: 我认为基本思路是合理的,但需要进行一些调整: 您的函数不会在上溢出,但是应该; 一次操作可以超过几次; 还需要考虑以下负值。 考虑到这一点,

  • 这是LeetCode中的Pascal三角形编码问题,它要求输出Pascal三角形的第n行。使用,输出如下所示: 显然存在溢出问题。现在为了解决这个问题,我修改了行< code > result . push _ back(result[I-1]*(rowIndex 1-I)/I);到< code > result . push _ back((double)result[I-1]*(double)

  • 我一直在考虑整数(int类型)溢出,我突然想到除法可能溢出。 示例:在我当前的平台上 因此 因此 因此 因此,除法 (INT_MIN / -1 ) 确实溢出。 因此,我有两个问题: > 可以编写哪些(跨平台)C代码来防止除法溢出(对于类型(有符号)int)? 什么保证(在C或C标准中)可能有助于设计代码? 例如,如果标准保证我们有 或者 然后出现以下代码来防止溢出。