天天看點

C語言基礎知識:printf的輸出格式(包含輸出結果)

printf()函數是格式輸出函數,請求printf()列印變量的指令取決與變量的類型.例如,在列印整數是使用%d符号,在列印字元是用%c 符号.這些符号被稱為轉換說明.因為它們指定了如何不資料轉換成可顯示的形式.下列列出的是ANSI C标準peintf()提供的各種轉換說明.

 

          轉換說明及作為結果的列印輸出 %a浮點數、十六進制數字和p-記數法(C99)

%A    浮點數、十六進制數字和p-記法(C99)

%c     一個字元 

%d    有符号十進制整數 

%e    浮點數、e-記數法

%E    浮點數、E-記數法

%f     浮點數、十進制記數法  

%g    根據數值不同自動選擇%f或%e.

%G    根據數值不同自動選擇%f或%e.

%i有符号十進制數(與%d相同)

%o    無符号八進制整數

%p    指針    

%s    字元串

%u    無符号十進制整數

%x    使用十六進制數字0f的無符号十六進制整數 

%X    使用十六進制數字0f的無符号十六進制整數

%%    列印一個百分号 使用printf ()函數  printf()的基本形式: printf("格式控制字元串",變量清單);

#include<cstdio> int main() { //for int int i=30122121; long i2=309095024l; short i3=30; unsigned i4=2123453; printf("%d,%o,%x,%X,%ld,%hd,%u\n",i,i,i,i,i2,i3,i4);//如果是:%l,%h,則輸不出結果 printf("%d,%ld\n",i,i2);//試驗不出%ld和%d之間的差别,因為long是4bytes printf("%hd,%hd\n\n\n",i,i3);//試驗了%hd和%d之間的差别,因為short是2bytes //for string and char char ch1='d'; unsigned char ch2=160; char *str="Hello everyone!"; printf("%c,%u,%s\n\n\n",ch1,ch2,str);//unsigned char超過128的沒有字元對應 //for float and double,unsigned and signed can not be used with double and float float fl=2.566545445F;//or 2.566545445f double dl=265.5651445; long double dl2=2.5654441454; //%g沒有e格式,預設6位包括小數點前面的數, //%f沒有e格式,預設6位僅隻小數點後面包含6位 //%e采用e格式,預設6位為轉化後的小數點後面的6位 printf("%f,%e,%g,%.7f\n",fl,dl,dl,dl); printf("%f,%E,%G,%f\n",fl,dl,dl,dl);//%F is wrong printf("%.8f,%.10e\n",fl,dl); printf("%.8e,%.10f\n\n\n",fl,dl); //for point int *iP=&i; char *iP1=new char; void *iP2;//dangerous! printf("%p,%p,%p\n\n\n",iP,iP1,iP2); //其他知識:負号,表示左對齊(預設是右對齊);%6.3,6表示寬度,3表示精度 char *s="Hello world!"; printf(":%s: \n:%10s: \n:%.10s: \n:%-10s: \n:%.15s: \n:%-15s: \n:%15.10s: \n:%-15.10s:\n\n\n", s,s,s,s,s,s,s,s); double ddd=563.908556444; printf(":%g: \n:%10g: \n:%.10g: \n:%-10g: \n:%.15g: \n:%-15g: \n:%15.10g: \n:%-15.10g:\n\n\n", ddd,ddd,ddd,ddd,ddd,ddd,ddd,ddd); //還有一個特殊的格式%*.* ,這兩個星号的值分别由第二個和第三個參數的值指定 printf("%.*s \n", 8, "abcdefgggggg"); printf("%*.*f \n", 3,3, 1.25456f); return 0; } 輸出結果為(Windows下gcc編譯): 30122121,162720211,1cba089,1CBA089,309095024,30,2123453 30122121,309095024 -24439,30 d,160,Hello everyone! 2.566545,2.655651e+002,265.565,265.5651445 2.566545,2.655651E+002,265.565,265.565144 2.56654549,2.6556514450e+002 2.56654549e+000,265.5651445000 0022FF3C,00811738,0022FED4 :Hello world!: :Hello world!: :Hello worl: :Hello world!: :Hello world!: :Hello world! : : Hello worl: :Hello worl : :563.909: : 563.909: :563.9085564: :563.909 : :563.908556444: :563.909 : : 563.9085564: :563.9085564 : abcdefgg 1.255