【问题标题】:Why is Swift 2.0 app throwing EXC_BAD_INSTRUCTION when I use for-in loop?当我使用 for-in 循环时,为什么 Swift 2.0 应用程序会抛出 EXC_BAD_INSTRUCTION?
【发布时间】:2015-11-28 19:23:30
【问题描述】:

我正在尝试使用 Swift 2.0 解决欧拉问题 #2,即在 400 万以下的斐波那契数列中找到所有偶数的总和。当我尝试迭代到 400 万 Xcode 时抛出错误“执行被中断,原因:EXC_BAD_INSTRUCTION(code = EXC_1386_INVOP,subcode=0x0)

var num1 = 0
var num2 = 1
var sum = 0
var evenSum = 0
var max = 4000000

for i in (1...max){
    print(i)
    sum = num1 + num2 //ERROR HERE!
    num1 = num2
    num2 = sum
    if((sum % 2) == 0){
        print(sum)
        evenSum += sum
    }
}
print("\(evenSum)",terminator:"")

Error Snapshot

【问题讨论】:

    标签: ios swift compiler-errors


    【解决方案1】:

    因为有整数溢出。总和变得太大了。当这种情况发生时,Swift 故意会使你的程序崩溃,这与其他语言不同,你会得到一个垃圾结果。

    您可以通过使用 Int64 作为变量的类型来进一步一点,但不会太多。

    顺便说一句。再次仔细阅读欧拉问题陈述。您的程序没有计算欧拉问题 #2 的要求。

    【讨论】:

    • 顺便说一句:最后的提示很好!
    猜你喜欢
    • 1970-01-01
    • 2012-08-03
    • 2021-05-28
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多