2013-11-10 43 views
3

我的問題不長,但它令我感到困惑。我是那些(我認爲應該如此)想知道他們所學語言的每一條規則的人之一。我想知道爲什麼這個語言會做它的功能。問題與優先級和++和*一元運算符在C

那麼,爲什麼++*i的值增加了*i,而不是i的指針呢?預增加運算符比間接運算符具有更高的優先級。這似乎是一個常識性的事情,但我必須再次確切地知道爲什麼。如果可以,請提供參考。

回答

3

前綴++具有相同的優先級一元*而後綴++ HSA優先級比一元*操作者更高。
++ *i編譯器的情況下,把它解釋爲

++ (*i); 

也就是說,解除引用i,使用它,遞增解除引用的值,而不改變指針的值。

+0

C手冊經常指出postfix和prefix運算符具有相同的優先級,但關聯性使得它幾乎與誰是對的無關,看起來似乎。 – Subsentient

5

它不能被解析爲*(++i),可以嗎?

順便說一句,*和前綴++相同的優先級,並從右到左結合。

+0

這很有道理。我剛剛證實我的手冊有一個錯字,它說++比*高。 – Subsentient

+0

Postfix ++(後增)較高,前綴++(前增)不是。 – Inspired