我是Swift的新手,所以这可能会变得非常简单,但无论如何我都会问你,因为我无法理解:
我在Playground上玩,并且认为我会编写一些代码行来执行此操作:在两个给定值(a,b)之间生成一个随机数。 例如,如果a = 5且b = 20,则应该生成5到20之间的随机数。 但是我收到了意想不到的错误!我写了这些代码行
var a = UInt32()
var b = UInt32()
var randomNumberInBetween = Int()
a = 5
b = 20
if (b - a) > 0 {
randomNumberInBetween = Int(arc4random_uniform(b - a) + a)
} else {
print("error", terminator: "")
}
现在:
如果b> a(所以(b-a)> 0)它工作得很好。
如果b = a,则打印“错误”,因此它可以正常工作。
但是如果&gt; b,使(b-a)<0,它给出了这个错误:“执行被中断,原因:EXC_BAD_INSTRUCTION(代码= EXC_l386_INVOP,子代码= 0x0)。”
我的问题是:如果(b-a)&lt; 0不应该只运行if语句的“else”部分而只打印“错误”?为什么会出现这种错误?
答案 0 :(得分:3)
UInt32
-
版本的(UInt32, UInt32) -> UInt32
有签名:UInt32
。
7 - 9是-2。
您无法使用无符号类型表达-2,例如func random(inRange range: Range<Int>) -> Int {
return range.lowerBound + Int(arc4random_uniform(UInt32(range.upperBound - range.lowerBound)))
}
func random(inRange range: ClosedRange<Int>) -> Int {
return range.lowerBound + Int(arc4random_uniform(UInt32(range.upperBound - range.lowerBound + 1)))
}
print(random(inRange: 1..<10))
。
尝试类似:
$output .='<div class="searchdiv"> <b>'.$tit.' </b>- '.$art.' <br> <a href="#" onclick="window.open('.$prev.', "_blank", "width=600,height=350");" >preview tutorial</a> - <a href="'.$wat.'" target="blank">watch full tutorial</a></div>';