我arc4random()
用来生成一定范围内的数字。但是,我会间歇性地收到负数。我没有做任何奇怪的事情:
if([aBug x] == -1) {
x = arc4random() % columns;
}
if([aBug y] == -1) {
y = arc4random() % rows;
}
在这里,x
有时y
会设置为负值。x
并且y
都是 type int
。
我arc4random()
用来生成一定范围内的数字。但是,我会间歇性地收到负数。我没有做任何奇怪的事情:
if([aBug x] == -1) {
x = arc4random() % columns;
}
if([aBug y] == -1) {
y = arc4random() % rows;
}
在这里,x
有时y
会设置为负值。x
并且y
都是 type int
。
因为arc4random()
总是积极的:
arc4random() 函数返回 0 到 (2**32)-1 范围内的伪随机数
我将不得不推断columns
或rows
“任意”否定。用负数修改正数将返回负数。
行和列的数据类型是什么?
听起来您想将 x 和 y 声明为 typeu_int32_t
而不是int
. 即,您应该使用无符号变量而不是有符号变量。
或者,使用大于 32 位的有符号整数(例如uint64_t
/ long long
)。
我遇到了同样的问题。我不知道为什么这会修复它但从
(int)arc4Random()%4
至
(int)(arc4Random()%4)
似乎对我有用。