int a[3]={10,20,30};
int* p = a;
cout << *p++ << endl;
wikipediaによると、接尾辞++は逆参照よりも優先順位が高く、最初に*p++実行p++してから逆参照する必要があり、結果は 20 になるはずですが、実際の結果が 10 になるのはなぜですか?
int a[3]={10,20,30};
int* p = a;
cout << *p++ << endl;
wikipediaによると、接尾辞++は逆参照よりも優先順位が高く、最初に*p++実行p++してから逆参照する必要があり、結果は 20 になるはずですが、実際の結果が 10 になるのはなぜですか?
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;