dereference和suffix ++ precedence

时间:2014-12-12 14:58:04

标签: c++ pointers operator-precedence postfix-operator

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

根据wikipedia,后缀++的优先级高于取消引用,*p++应首先运行p++,然后取消引用,结果应为20,但为什么是实际的结果是10?

1 个答案:

答案 0 :(得分: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;