使用Playground Xcode 7.1.1中的以下代码获取上述错误:
import Cocoa
func countDivisors(number:Int) -> Int
{
var c = 0
for i in 1 ... number
{
if number % i == 0 { ++c }
}
return c
}
func isPrime(number:Int) -> Bool
{
return countDivisors(number) == 2
}
isPrime(2);
for i in 0 ..< 100
{
var f:Bool = isPrime(i)
print("\(i): \(f)")
}
错误发生在
行上var f:Bool = isPrime(i)
我已经重新安装了Xcode,但仍然出现错误。有谁知道这背后的原因?
答案 0 :(得分:2)
获得“EXC_BAD_INSTRUCTION”的原因是因为for循环的范围运算符无法形成结束值为0的范围。范围运算符的结束值应大于或等于起始值。
来自apple docs,
闭区域运算符(a ... b)定义从a到b的范围,包括值a和b。 a的值不得大于b。
这将有效
for i in 1...1 {
//--
}
但不是这个
for i in 1...0 {
//--
}
答案 1 :(得分:0)
当调用行var f:Bool = isPrime(i)
时,i的初始值为0,除以零给出未知值。最好将循环更改为for i in 1 ..< 100