iOS中判断数组长度问题

昨天同事在项目中,对一个数组长度进行判断的时候,出现了一个诡异的情况。

在判读数组长度是否大于6时,使用数组长度减去6进行判断,代码如下:

//初始化数据       NSMutableArray *listArray = [[NSMutableArray alloc] initWithObjects:@"cell1",@"test2", nil];      if ([listArray count] - 6 > 0) {       NSLog(@"listArray数组的长度大于6");//即使数组长度为2也会打印出信息    }  

翻看数组NSArray的API后发现,数组的count属性类型是NSUInteger,对应C语言中的无符号整型,当一个整型类型的数(int 类型)和无符号整型(unsigned int类型)的数相做加减运算时,运算的结果是一个无符号整型(unsigned int)类型,所以,在上面的示例中, [listArray count] - 6 > 0 的值是大于0的,所以在进行无符号整型(unsiged int)和整型(int)的运算的时候,需要特别注意,上面代码的正确写法应该如下:

//初始化数据                      NSMutableArray *listArray = [[NSMutableArray alloc] initWithObjects:@"cell1",@"test2", nil];  

 

int judgeCase = [listArray count] - 6 ;//将unsiged类型的值强制转化成int类型   if (judgeCase > 0) {       NSLog(@"listArray数组的长度大于6");//即使数组长度为2也会打印出信息   }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/pxfpx.html