c++ - 取消引用和后缀++优先级

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

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/

相关文章:

c++ - 混合模板与多态性

c++ - strlen 函数总是返回 0

c++ - 空指针的地址是什么?

C++17 排序 : post-increment on left side of assignment

go - 位移 << 和乘法 * 优先级

c++ - 无序设置为 boost::asio::ip::tcp::endpoint - 试图引用已删除的函数

c++ - 如果一个类继承 NSObject 会有多少开销

c++ - 像素绘图库

c++ - 在 C++ 中将字符数组添加到 const string&

python - python中使用pop()、list[-1]和+=时的求值顺序是什么?