1
char *p="abcd";
我有以下代碼中的兩個語句
++*p;
和第二個
*++p;
這兩個都產生相同的結果,但有在途中的任何差這兩個是否實現?還請清除哪一個具有更高的優先級「++」或「*」。謝謝
char *p="abcd";
我有以下代碼中的兩個語句
++*p;
和第二個
*++p;
這兩個都產生相同的結果,但有在途中的任何差這兩個是否實現?還請清除哪一個具有更高的優先級「++」或「*」。謝謝
引用具有更高優先級的優先級表運算符將首先進行評估。
在您的情況下,您使用的前綴增量爲++
,它與尊重運算符*
具有相同的優先級。 所以當你有兩個在同一個表達式時應該考慮它的關聯性which is right to left
++ * p將等於++(* p)指針首先被置位,然後值遞增。
char *p="abcd";
即*p
等於a
和++
上字符會給你b
* ++ p將爲相當於*(++ p)的指針被遞增第一然後deference'd
即++p
將指向b
字符串中,然後再*
尊重會給你b。在位置2
改變你的輸入字符串,你會得到不同的答案。你得到的同樣的答案正如第一個字符的操作與第二個操作匹配
這兩個語句只是產生相同的值,因爲你初始化了'p'的特定字符串(並且因爲你的編譯器沒有發生分配標記爲只讀的內存中的字符串)。 – user2357112
嘗試字符串「等等」,看看他們做**不**產生相同的結果。 –
@ Cheersandhth.-Alf,但爲什麼它產生相同的結果 – YakRangi