0

我正在尝试将一些对象放在屏幕上的随机位置。

我使用 arc4random() 生成一个新的随机数。

但似乎该功能无法正常工作,这是代码和跟踪结果:

Code :

UIView *stateView = [[UIView alloc] initWithFrame:CGRectMake( (arc4random()%700)-100 , (20 * 91) + 378 + ((arc4random()%600)+200), 325 , 188)];

NSLog(@"Note %d : X = %f , Y = %f",i,stateView.frame.origin.x,stateView.frame.origin.y);


**********************


NSLog Output :

Note 5 : X = 4294967040.000000 , Y = 2552.000000

这是一个错误还是我对生成器做错了?

4

1 回答 1

0

根据 的文档arc4random(),返回类型是u_int32_t,这是一个无符号类型。在表达式中

(arc4random()%700)-100

计算,包括减法,是使用无符号算术完成的。你得到无符号算术溢出。要解决此问题,请在进行减法之前强制转换为有符号整数类型:

((int) (arc4random() % 700)) - 100

其结果将是从 -100 到 599 的整数。

于 2012-09-29T21:32:18.613 回答