C中的%d,%o,%f,%e,%x的區別

C中的格式字符有d,o,x,u,c,s,f,e,g等,以前有看到其中某些能夠大寫(待肯定)。 
如:web

%d整型輸出,%ld長整型輸出,函數

%o以八進制數形式輸出整數,spa

%x以十六進制數形式輸出整數,指針

%u以十進制數輸出unsigned型數據(無符號數)。orm

%c用來輸出一個字符,字符串

%s用來輸出一個字符串,it

%f用來輸出實數,以小數形式輸出,io

%e以指數形式輸出實數,編譯

%g根據大小自動選f格式或e格式,且不輸出無心義的變量

 

c語言中以16進制輸出時%0x和%x有什麼區別?


標準C語言庫函數fprintf/printf格式字符串的轉換說明形式是這樣的:

%[標誌][最小輸出寬度][.精度][長度修正符]類型
方括號括起來爲option項目。

當[標誌]是0或多個標誌字符,能夠是任意順序,經常使用有如下幾個:
 -   左對齊,缺省是右對齊。
 + 帶符號的值前面老是有個符號,也就是正數前面有+號,負數前面有-號。
 0  輸出值的寬度小於最小寬度的話,用0填充,缺省是用空格填充。

0也是是一個標誌字符,意思就是用0填充
 


特殊狀況:C語言%p的含義:

格式控制符「%p」中的p是pointer(指針)的縮寫。指針的值是語言實現(編譯程序)相關的,但幾乎全部實現中,指針的值都是一個表示地址空間中某個存儲器單元的整數。printf函數族中對於%p通常以十六進制整數方式輸出指針的值,附加前綴0x。
示例:
int i = 1;
printf("%p",&i);
至關於
int i = 1;
printf("0x%x",&i);
對於32位的指針,輸出通常會是相似0xf0001234之類的結果。
%p存在的理由除了附加前綴輸出的便利性之外,如LS所說,指針的大小是不肯定的,由實現決定。根據地址空間的大小,通常有16位、32位、64位的指針。儘管目前32位平臺上的指針通常全是32位的,但舊的一些平臺上可能有多種長度的指針(例如非標準的near、far、huge修飾的pointer)混用,沒法用%x、%lx、%hx、%llx(對應int、long、short、long long)中的任意一種保證能輸出全部類型的指針。

 

 

scanf(控制字符,地址列表) ;


格式字符的含義同printf函數,地址列表是由若干個地址組成的表列,能夠是變量的地址,或字符串的首地址。如scanf("%d%c%s",&a,&b,str);

注意控制字符之間的格開字符,通常數據之間的分隔爲:空格,tab,和回車;如獲取的爲字符時,空格和tab都可當爲字符給自動錄入。

相關文章
相關標籤/搜索