我正在閱讀一些代碼,並遇到這件事。我現在沒有整個環境保存這一行。奇怪的運算符與指針
cout<<(*--*++ptr+1)<< endl;
編譯沒有問題,當它在我們的輸入值..
其聲明是這樣工作的。
char ***ptr ;
這個操作符是什麼,它是否包含在標準中?
我正在閱讀一些代碼,並遇到這件事。我現在沒有整個環境保存這一行。奇怪的運算符與指針
cout<<(*--*++ptr+1)<< endl;
編譯沒有問題,當它在我們的輸入值..
其聲明是這樣工作的。
char ***ptr ;
這個操作符是什麼,它是否包含在標準中?
它不是一個操作符,它是幾個一元運算符的組合。它被解析如下:
*(--(*(++ptr))) + 1
所以,ptr1
先增加,然後解除引用,則該值被降低,並且再次取消引用。
圓括號使*更容易理解。 * [提示,如果您正在編寫類似於此的代碼] * –
那麼它等於* ptr + 1? – Ralph
@Ralph不,你不會像你遞增一樣在'*'s的同一層遞減。 –
答案就夠了。這些類型的技巧是可以的,我想,但應該在評論之前說明操作意圖以及可能的簡要解釋。 – speakingcode
這是真實的生產代碼嗎? –
-1不是真實代碼 –