我正在使用arc4random()
生成某个范围内的数字。但是,我会间歇地收到负数。我没有做任何奇怪的事情:
if([aBug x] == -1) {
x = arc4random() % columns;
}
if([aBug y] == -1) {
y = arc4random() % rows;
}
此处,x
和y
有时会设置为负值。 x
和y
都属于int
类型。
答案 0 :(得分:4)
由于arc4random()
始终为正:
arc4random()函数返回0到(2 ** 32)-1范围内的伪随机数
我必须推断columns
或rows
是“任意”否定的。将正数编号为负数将返回负数。
行和列的数据类型是什么?
答案 1 :(得分:4)
听起来你想要声明x和y是u_int32_t
类型而不是int
。即,您应该使用无符号变量而不是签名。
或者,使用大于32位的有符号整数(例如uint64_t
/ long long
)。