1
int a[3]={10,20,30};
int* p = a;
cout << *p++ << endl;

wikipediaによると、接尾辞++は逆参照よりも優先順位が高く、最初に*p++実行p++してから逆参照する必要があり、結果は 20 になるはずですが、実際の結果が 10 になるのはなぜですか?

4

1 に答える 1

3

p++後置インクリメント演算子を使用します。つまり、インクリメントしますが、インクリメントするpに存在していた値を返します。つまり、これは次のようなことを行うのと同じです。

int a[3]={10,20,30};
int* p = a;
int* q = p;
++p;
cout << *q << endl;

10そのようにスタイリングすると、なぜ印刷されているのかは明らかです。逆参照をインクリメントして出力したい場合pは、プレフィックスインクリメント演算子を使用できます。

int a[3]={10,20,30};
int* p = a;
cout << *(++p) << endl;
于 2014-12-12T15:03:13.847 に答える