2015-11-04 74 views
-5

請說明輸出。我不明白該計劃的輸出。輸出如何作爲合作伙伴

void main(){ 
    char c[]="PATHPARTNER"; 
    char *p=c; 
    printf("%s",p+p[7]-p[0]); 
} 
+0

尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現它所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建最小,完整和可驗證示例。 – Olaf

+0

SO不是「解釋我的代碼」服務。 – Olaf

回答

0

在你的代碼,p+p[7]-p[0]是一樣p+ 'T'-'P'。讀取數組索引。

現在,關於指針運算(加法),讓我們來看看C11規範,章§6.5.6

時具有整數類型的表達式中加上或減去從指針, 結果具有指針操作數的類型。如果指針操作數指向數組對象的元素,並且該數組足夠大,則結果指向原始元素的偏移量 ,從而使得結果數組元素和原始數組元素的下標之差等於整數表達式。 [...]

現在,下面的ASCII values,我相信你可以計算其餘部分。

FWIW,void main()最好至少爲int main(void)

+0

謝謝你...... :) 我在想這個程序很多...這麼簡單... –