在c ++中,为什么a = * pr ++,c = pr ++,a是* pr而不是* c?

时间:2017-05-25 16:54:37

标签: c++

在c ++入门中,我发现了这个问题,本书解释了这个问题,因为增量运算符(++)优先于解析运算符(*),例如:

a=*p++;

等于:

a=*(p++);

但是为什么a等于p点的初始值而不是p ++点的值。在第二个编码中,我们知道括号的优先级是最高的,所以它应该首先执行p ++,然后执行解决方案到地址运算符,所以它应该在它改变地址后返回p指向的值。但事实并非如此。为什么?我不明白。

1 个答案:

答案 0 :(得分:3)

  

但为什么a等于p的初始值?

因为p++帖子增量,它会在应用增量之前返回先前的p值。因此,在a = *p++中,a被赋予p在应用增量之前最初指向的值。

这与基本相同:

previous = p;
++p;
a = *previous;

括号不会影响到它。您可以在Operator Precedence中阅读更多内容。