#include<stdio.h>
int main()
{
printf("%#04x",50);
}
有人向我展示了上面的代碼,我無法理解它,因爲我已經在C程序中使用了printf,但是第一次在我的生活中看到過這種用法。 爲什麼上面的代碼打印輸出照爲什麼下面的printf打印0x32
0x32
可有一個人給我一個鏈接或參考了一些東西,這樣我可以更好地瞭解它。
#include<stdio.h>
int main()
{
printf("%#04x",50);
}
有人向我展示了上面的代碼,我無法理解它,因爲我已經在C程序中使用了printf,但是第一次在我的生活中看到過這種用法。 爲什麼上面的代碼打印輸出照爲什麼下面的printf打印0x32
0x32
可有一個人給我一個鏈接或參考了一些東西,這樣我可以更好地瞭解它。
從printf(3)
手冊頁面:
字符%後跟下列標誌的零個或多個:該值應被轉換爲一個「備用
#—形成」。對於o轉換,輸出字符串的第一個字符爲零(如果它已經不爲0,則加前綴0)。對於x和X轉換,非零結果的前綴爲字符串「0x」(或用於X轉換的「0X」)。對於a,e,E,f,F,g和G轉換,結果將始終包含一個小數點,即使沒有數字後跟一個小數點(通常,小數點只出現在這些轉換的結果中數字如下)。對於g和G轉換,結尾的零不會像結果一樣從結果中刪除。對於其他轉換,結果未定義。
省略其他標誌...
因此,%#預規劃 「0X」 的輸出,因爲輸出格式爲x
。 0表示用於填充的0
(零)。然後數字4表示要打印的字符總數是四個。如果已將數字4與10進行了交換,則輸出將會是0x00000032
–共10個字符。
0不是預先標記'0x'的標誌的一部分。它用零指定填充而不是空格。在這個例子中,它最終變得無關緊要,因爲沒有填充。 – 2010-11-22 15:56:04
50十進制數是32個十六進制數。
除此之外,documentation應告訴你所有你需要知道的。
如果你已經指出了你期望看到的內容,它會有所幫助。 – 2010-11-22 14:39:33