随着 iPhone 5S 的更新,我希望我的应用程序能够支持新的 64 位处理器。
但是,如果将较大的数据类型转换为较小的数据类型,例如将 long 转换为 int,则使用 64 位可能会导致截断。大多数情况下,这可以通过使用更大的数据类型轻松解决,但对于有时使用“time(NULL)”函数播种的随机数生成器,我无法做到这一点。
当前代码很简单:
srandom(time(NULL));
但是在具有 64 位的 XCode 5 中,它会导致以下错误:Implicit conversion loses integer precision: 'time_t' (aka 'long') to 'unsigned int'
. 这是因为“time(NULL)”返回一个长整数,而“srandom”需要一个无符号整数。因此有两种选择:
- 将长整数转换为无符号整数
- 将“time(NULL)”替换为另一个执行相同工作但返回无符号整数的函数。
你会推荐哪一个,我应该使用什么功能来做到这一点?
注意:我使用 random() 而不是 arc4random() 因为我还需要能够播种随机数生成器以获得可重复的结果。