2012-08-01 51 views
3

這裏是我的代碼:INT ++遞增4

- (IBAction)NextTouched:(id)sender { 
    NSLog(@"Index = %i", index); 
    if([project getCount]>(index++)) { 
     [self setUI:index]; 
    } 
} 

指數是一個整數,在我的.h文件中聲明:

@property (nonatomic) int *index; 

但每次我點擊該按鈕時,日誌說,整數正在上升4.你能告訴我爲什麼?

+0

顯示'index'聲明。它不是一個指針而不是整數? – Sulthan 2012-08-01 09:27:52

+0

爲什麼在日誌調用中增加它?你沒有得到實際的值,你得到的實際值減1(即在'++'操作符增加它之前)。 – trojanfoe 2012-08-01 09:28:34

+0

哎呦,我編輯了代碼:P – 2012-08-01 09:29:16

回答

12

它上升4的原因是因爲index指針。當你遞增一個指針時,它的值增加它所指向的數據類型的大小,在這種情況下是一個int,它是4個字節。

鑑於index似乎是一個索引到NSArray(或其他集合類),我想你想讓它int,而不是int *解決您的問題。最好還是使其無符號,如NSUInteger,這是從count方法返回的類型。

此外,我想你會想使用前綴增量而不是後綴增量,以便if測試使用新遞增的值,而不是以前的值。

+0

尼斯答案... – TheTiger 2012-08-01 10:00:03

0

簡單地定義指數爲整型變量而不是指針,如果你想之前增加使用索引打印的價值++其他用途++指數遞增值,然後打印