我正试图在屏幕上随机放置一些物体。
我使用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
这是一个错误还是我对发电机做错了?
答案 0 :(得分:0)
根据documentation for arc4random()
,返回类型为u_int32_t
,这是一种无符号类型。在表达式
(arc4random()%700)-100
使用 unsigned 算法完成计算,包括减法。您正在获得无符号算术溢出。要解决此问题,请在进行减法之前强制转换为有符号整数类型:
((int) (arc4random() % 700)) - 100
结果将是-100到599之间的整数。