32 ビット整数の最大値は 2^31-1 = 2147483647 ですが、負数と正数だけです。数の半分がマイナスだからです。したがって、実際の最大値は 2^32-1 = 4294967295 です。ただし、この場合は正の数のみを使用します。
わかりました、通常の int は負と正の両方の数値です。最大値を 4294967295 にしたいので、正の数だけを使用したいです。「int」の代わりに「unsigned int」を使用します。
しかし、これはうまくいきません!最大値は 2147483647 のままです。
単純な乱数ジェネレーターのコードは次のとおりです。
-(Action for my button) {
unsigned int minNumber;
unsigned int maxNumber;
unsigned int ranNumber;
minNumber=[self.textFieldFrom.text intValue]; //getting numbers from my textfields
maxNumber=[self.textFieldTo.text intValue]; //Should i use unsigned intValue?
ranNumber=rand()%(maxNumber-minNumber+1)+minNumber;
NSString *str = [NSString stringWithFormat:@"%d", ranNumber];
self.label.text = str;
}
これにより、最大値として 2147483647 が表示されます。
どうしたの?textFields から数値を取得するときに unsigned intValue を使用する必要がありますか?
ジョナサン
ここで、この数について読むことができます。: http://en.wikipedia.org/wiki/2147483647