程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 數組長度判斷時出現的詭異問題總結

數組長度判斷時出現的詭異問題總結

編輯:C++入門知識

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

[cpp] 
<pre name="code" class="cpp">//初始化數據 
 
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)的運算的時候,需要特別注意,上面代碼的正確寫法應該如下:

[html] 
//初始化數據 
         
        NSMutableArray *listArray = [[NSMutableArray alloc] initWithObjects:@"cell1",@"test2", nil]; 
[html] view plaincopy
int judgeCase = [listArray count] - 6 ;//將unsiged類型的值強制轉化成int類型 
[html] view plaincopy
if (judgeCase > 0) { 
    NSLog(@"listArray數組的長度大於6");//即使數組長度為2也會打印出信息 

作者:yhawaii

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved