我有以下代码:
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
我知道可能会发生某种溢出,但是为什么这两种情况不同,为什么它不能按我想要的方式工作?即使在进行微不足道的算术运算时,我是否应该始终提醒自己变量和表达式的特定数字类型?
PS当然我可以使用unsigned int
代替NSUInteger
,没有区别。