相同功能的结果不同

时间:2011-08-30 12:04:10

标签: iphone objective-c ios

有人可以向我澄清一下,为什么在运行此代码时,past2不是否定的?即使过去是。

感谢。

NSTimeInterval p1 = (arc4random()%600000);
NSTimeInterval past = -p1;
NSTimeInterval past2 = -(arc4random()%600000);

1 个答案:

答案 0 :(得分:2)

arc4random()返回一个unsigned int(u_int32_t),因此尝试将其设为负数也会将结果强制转换为unsigned,这就是为什么你得到一个非常大的正数而不是负数。

如果您想在一次通话中获得负面随机结果,请尝试:

NSTimeInterval past2 = - (int) (arc4random()%600000);