Object-CiOS,object-c和swift开发iOS基础·OC高级篇

NSUInteger 的 “负值” 问题

2017-08-07  本文已影响100人  StoneN
说明:

今天遇到一个特别的Bug

NSArray *array;
// 定义 array 为:存有 100 个数的数组;
NSInteger index = -1;
if (index >= array.count) {
  NSLog(@"index >= 100");
} else {
  NSLog(@"index < 100");
}
// 打印:index >= 100

显然,结果和我们期待的很不一样:难道不应该是-1 < 100吗?经过一番查证,终于找到了问题所在,特此以记之。

问题详述:
解决方法:

若必要,在拿NSIntegerNSUInteger进行运算时,需手动将NSUInteger转型为NSInteger.

NSInteger b = -1;
NSUInteger ub = 0;     
if (b > (NSInteger)ub) {          
    NSLog(@"-1 > 0");
} else {
    NSLog(@"-1 < 0");
}
// 打印:-1 < 0 
上一篇下一篇

猜你喜欢

热点阅读