将NSUInteger乘以CGFloat的结果是什么?
我认为结果将是CGFloat。
- NSUInteger * CGFloat = - CGFloat
但实际上结果给了一个有趣的操纵。我应该知道什么规则?
NSArray *arr = @[ @"One", @"Two", @"Three"];
NSLog(@"__float %f", - arr.count * 0.3f);
__float 1288490240.000000
答案 0 :(得分:2)
这是一个操作顺序问题。前导减号是-1 * ...
的缩写。这与乘法arr.count * 0.3f
具有相同的优先级。然后从左到右执行这些操作。试图使无符号整数为负数是一个坏主意。
答案 1 :(得分:1)
这里发生的是符号的改变导致无符号整数表示回绕。
如果更改浮点数的符号,则没有问题:
NSLog(@"__float %f", - 0.3f * arr.count);
在屏幕__float -0.900000
中打印