4

为什么我会得到这个代码的结果?

代码

ids = 0;
for (NSString *s in golferThreeIconCounter) {
    ids++;
    NSLog(@"%i", ids);
}

结果

2012-05-24 16:30:35.194 Dot Golf Scoring[673:f803] 4
2012-05-24 16:30:35.196 Dot Golf Scoring[673:f803] 8
2012-05-24 16:30:35.196 Dot Golf Scoring[673:f803] 12
2012-05-24 16:30:35.197 Dot Golf Scoring[673:f803] 16
2012-05-24 16:30:35.197 Dot Golf Scoring[673:f803] 20
2012-05-24 16:30:35.198 Dot Golf Scoring[673:f803] 24
2012-05-24 16:30:35.199 Dot Golf Scoring[673:f803] 28
2012-05-24 16:30:35.199 Dot Golf Scoring[673:f803] 32
2012-05-24 16:30:35.200 Dot Golf Scoring[673:f803] 36
2012-05-24 16:30:35.200 Dot Golf Scoring[673:f803] 40
2012-05-24 16:30:35.201 Dot Golf Scoring[673:f803] 44
2012-05-24 16:30:35.201 Dot Golf Scoring[673:f803] 48
2012-05-24 16:30:35.202 Dot Golf Scoring[673:f803] 52
2012-05-24 16:30:35.202 Dot Golf Scoring[673:f803] 56
2012-05-24 16:30:35.203 Dot Golf Scoring[673:f803] 60

为什么 ids 上升 4 次而不是只上升一次,这对我来说完全没有意义......

4

4 回答 4

14

声明 int 时,不要添加*: 它不是<id>类型。你所拥有的是一个指向int; 在 32 位平台上,它以 4 递增。

int ids = 0;
于 2012-05-24T20:37:49.827 回答
1

您正在打印数组中引用的指针的“位置”计数。

所以让我试着澄清一下。

一个指针是四个字节。在这种情况下,您有一个指针数组。因此,当您循环时,您正在打印指针索引的 int 值。

于 2012-05-24T20:38:25.783 回答
0

您需要使用增加:*ids++因为您已将其声明为参考。否则,您需要将其声明为原始变量:int ids = 0;

于 2012-05-24T20:37:51.010 回答
0
int ids = 0;
for (NSString *s in golferThreeIconCounter) {
    ids++;
    NSLog(@"%i", ids);
}

尝试这个。您从未声明过变量的类型ids

于 2012-05-24T20:39:29.840 回答