iPhone 5S のアップデートで、アプリが新しい 64 ビット プロセッサをサポートできるようにしたいと考えています。
ただし、64 ビットを使用すると、long を int にキャストする場合のように、大きなデータ型を小さなデータ型にキャストすると、切り捨てが発生する可能性があります。ほとんどの場合、これはより大きなデータ型を使用するだけで簡単に修正できますが、「time(NULL)」関数を使用してシードされることがある乱数ジェネレーターの場合、それはできません。
現在のコードは単純です:
srandom(time(NULL));
しかし、64 ビットの XCode 5 では、次のエラーが発生していますImplicit conversion loses integer precision: 'time_t' (aka 'long') to 'unsigned int'
。これは、「time(NULL)」が long 整数を返し、「srandom」が unsigned int を必要とするためです。したがって、次の 2 つのオプションがあります。
- long 整数を unsigned int に変換します
- 「time(NULL)」を、同じ仕事をするが unsigned int を返す別の関数に置き換えます。
どちらをお勧めしますか?また、そのためにはどの機能を使用すればよいですか?
注: 反復可能な結果を得るために乱数ジェネレーターをシードできる必要があるため、arc4random() の代わりに random() を使用します。