2017-05-25 63 views
-4

在C++底漆,我发现这个问题,这本书解释了这个问题对于增量运算符(++)是之前的解决方案,以解决运营商(*),例如:in C++,why a = * pr ++,c = pr ++,a是* pr而不是* c?

a=*p++; 

它等于于:

a=*(p++); 

但为什么等于这是p指向代替对++ points.In初始值的值的第二编码,我们知道,括号中的优先级是最高的,所以应该先执行的p ++ ,然后执行解决方案以解决运算符问题,所以它应该在更改地址后返回p点的值。但事实并非如此。为什么?我不明白这一点。

+1

你真的可以发布一些格式化的代码?因为很难理解你的问题是什么。 – NathanOliver

+1

'p ++'在*它修改之前返回'p' *的值 - 圆括号不会改变任何关于 – UnholySheep

+0

我已经改变了格式 – karel

回答

3

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

由于p++增量,它返回被施加的增量之前的p先前的值。因此,在a = *p++,a分配的值是p在应用增量之前最初指出的值。

它基本上是一样的这样做:

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

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