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;
关于c++ - 取消引用和后缀++优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27446304/