歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

iOS中判斷數組長度問題

昨天同事在項目中,對一個數組長度進行判斷的時候,出現了一個詭異的情況。

在判讀數組長度是否大於6時,使用數組長度減去6進行判斷,代碼如下:

  1. //初始化數據   
  2.   
  3. NSMutableArray *listArray = [[NSMutableArray alloc] initWithObjects:@"cell1",@"test2", nil];  
  4.   
  5. if ([listArray count] - 6 > 0) {  
  6.     NSLog(@"listArray數組的長度大於6");//即使數組長度為2也會打印出信息   
  7. }  

翻看數組NSArray的API後發現,數組的count屬性類型是NSUInteger,對應C語言中的無符號整型,當一個整型類型的數(int 類型)和無符號整型(unsigned int類型)的數相做加減運算時,運算的結果是一個無符號整型(unsigned int)類型,所以,在上面的示例中, [listArray count] - 6 > 0 的值是大於0的,所以在進行無符號整型(unsiged int)和整型(int)的運算的時候,需要特別注意,上面代碼的正確寫法應該如下:

  1. //初始化數據  
  2.           
  3.         NSMutableArray *listArray = [[NSMutableArray alloc] initWithObjects:@"cell1",@"test2", nil];  
 
  1. int judgeCase = [listArray count] - 6 ;//將unsiged類型的值強制轉化成int類型  
  2. if (judgeCase > 0) {  
  3.     NSLog(@"listArray數組的長度大於6");//即使數組長度為2也會打印出信息  
  4. }  
Copyright © Linux教程網 All Rights Reserved