gpt4 book ai didi

objective-c - 尴尬的 arc4random 结果

转载 作者:搜寻专家 更新时间:2023-10-30 20:03:43 25 4
gpt4 key购买 nike

我正在使用这段代码,其中“长度”值为“50”。

newX = (arc4random()%(lenght+1)) - (lenght/2);
newY = (arc4random()%(lenght+1)) - (lenght/2);
NSLog(@"Creature Move X:%f, Y:%f", newX, newY);

但是在调试器中我得到了类似的东西:

2012-01-02 21:10:50.794 Kipos[28833:207] Creature Move X:4294967296.000000, Y:4294967296.000000
2012-01-02 21:10:50.896 Kipos[28833:207] Creature Move X:4294967296.000000, Y:12.000000

发生了什么事?

newXnewY 是 float :

float newX;
float newY;

最佳答案

arc4random 返回一个 unsigned int(并且大概 length 也是无符号的)。将您的代码更改为例如

newX = (float)((int)(arc4random() % (length + 1))) - (length / 2));

为了避免减法时溢出。

请注意,我还为结果添加了一个显式浮点转换,这不是绝对必要的,但它使代码更加不言自明。

关于objective-c - 尴尬的 arc4random 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8704951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com