私は次のコードを持っています:
NSUInteger one = 1;
CGPoint p = CGPointMake(-one, -one);
NSLog(@"%@", NSStringFromCGPoint(p));
その出力:
{4.29497e+09, 4.29497e+09}
一方で:
NSUInteger one = 1;
NSLog(@"%i", -one); // prints -1
おそらく何らかのオーバーフローが発生していることは知っていますが、なぜ2つのケースが異なるのか、そしてなぜそれが私が望むように機能しないのですか?些細な算術を行う場合でも、変数と式の特定の数値タイプを常に思い出す必要がありますか?
PSもちろん、のunsigned int
代わりに使用することもできますがNSUInteger
、違いはありません。