我一直在看Zed A. Shaw的「Learn C hard way」教程。他的一個額外信貸問題(練習9)要求我代表char[4]
作爲int
。%用於表示整數的X格式說明符
跑遍了全後,我來到了一個SO問題,這是同樣的事情,因此設法想出答案:
int i;
int intName = 0;
for(i = 0; i < 4; i++){
intName = intName + name[i];
}
printf("intName: %d\n", intName);
printf("intName: %X\n", intName);
輸出:
intName: 291
intName: 123
手頭的名字是「Zed」,我計算了ASCII十進制值,他們確實加起來爲291,這很好。然而,在搜索後,我找不到任何解釋,爲什麼%X
將返回123.
在這種情況下,此格式說明符是做什麼的?如果我想得到一些關於發生什麼的詳細答案,那將是非常棒的。學習C似乎更深入,我覺得我應該完全理解這些基本知識,然後再轉向其他任何東西。
我不認爲你的解決方案是該問題的作者想到的。您只需添加字符的序數值,例如'「Zed」'和'「edZ」'會產生相同的結果,就像其他許多不同字符的組合一樣。我認爲你需要更仔細地閱讀練習。 (我假設這個問題本身是相當明確的,但我沒有檢查。) – 2014-10-30 18:11:55
當以十六進制打印一個數字時,最好在它前面加上'0x'或'0X'來清楚閱讀器(假設讀者對C語法有所瞭解):'printf(「intName:0x%X \ n」,intName);' – 2014-10-30 18:13:02
@KeithThompson - 我明白你的意思,可能是這樣的情況,Extra Credits部分相當含糊,主要是幫助你探索你通常不會探索的東西。如果你希望看看Zed A. Shaw的教程練習9以更好地瞭解他所要求的內容。至於你的第二個評論,你是對的,最好用一個0x表示十六進制。謝謝! – Juxhin 2014-10-30 18:16:44