2012-08-01 57 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

简单地定义指数为整型变量而不是指针,如果你想之前增加使用索引打印的价值++其他用途++指数递增值,然后打印