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

idが1回ではなく4回上がる理由は私にはまったく意味がありません...

4

4 に答える 4

14

intを宣言するときは、追加しません。*これは<id>型ではありません。あなたが持っているのは;へのポインタです。int32ビットプラットフォームでは、4ずつ増加します。

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

配列で参照されているポインターの「位置」カウントを出力しています。

それで、それを明確にしようと思います。

ポインタは4バイトです。この場合、ポインタの配列があります。したがって、ループすると、ポインタのインデックスの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 に答える