2017-05-25 17 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中閱讀更多內容。