Xcode Swift游乐场错误:EXC_BAD_指令(代码=EXC_I386_INVOP,子代码=0x0)
在Xcode 7.1.1中使用以下代码获取上述错误:Xcode Swift游乐场错误:EXC_BAD_指令(代码=EXC_I386_INVOP,子代码=0x0),xcode,swift,Xcode,Swift,在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(
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)")
}
我已经重新安装了Xcode,但仍然出现错误。有人知道这背后的原因吗?当调用行
var f:Bool=isPrime(i)
时,i的初始值为0,除以0给出一个未知值。最好将1..<100中的i的循环更改为,因为for循环的range运算符不能形成一个结束值为0的范围,所以会出现“EXC\u BAD\u指令”。范围运算符的结束值应大于或等于开始值
从苹果文档
闭合范围运算符(a…b)定义从a到b的范围,包括值a和b。a的值不得大于b
这会奏效的
for i in 1...1 {
//--
}
但不是这个
for i in 1...0 {
//--
}
零是问题所在,但不是因为被零除的缘故。请参见下面RP的答案了解发生了什么。边节点:测试应该从2开始,当i>=数字的平方根时停止。当您测试数字10000时,测试将在1%的时间后完成。
for i in 1...0 {
//--
}