arc4random()
特定の範囲の数値を生成するために使用しています。ただし、断続的に負の数を受け取ります。私は奇妙なことは何もしていません:
if([aBug x] == -1) {
x = arc4random() % columns;
}
if([aBug y] == -1) {
y = arc4random() % rows;
}
ここでx
、y
時には負の値に設定されます。x
とy
は両方ともタイプint
です。
arc4random()
特定の範囲の数値を生成するために使用しています。ただし、断続的に負の数を受け取ります。私は奇妙なことは何もしていません:
if([aBug x] == -1) {
x = arc4random() % columns;
}
if([aBug y] == -1) {
y = arc4random() % rows;
}
ここでx
、y
時には負の値に設定されます。x
とy
は両方ともタイプint
です。
u_int32_t
xとyを。ではなくタイプとして宣言したいようですint
。つまり、符号付きではなく符号なし変数を使用する必要があります。
または、32ビットより大きい符号付き整数を使用します(例:uint64_t
/ long long
)。
arc4random()
は常に正なので:
arc4random()関数は、0から(2 ** 32)-1の範囲の疑似乱数を返します。
私はそれを推測する必要があるcolumns
かrows
、「任意に」否定的です。正の数を負の数で変更すると、負の数が返されます。
行と列のデータ型は何ですか?
私も同じ問題を抱えていました。なぜこれで修正されたのかわかりませんが、
(int)arc4Random()%4
に
(int)(arc4Random()%4)
私のために働いているようでした。