1. 格式控制符
格式輸出printf 作用是向終端輸出若干個類型任意的數據。
格式:printf (格式控制符,輸出列表)
1) 格式控制符
l % 格式說明引導符。
l - 指定左對齊輸出。
l 0 指定空位填零。
l m.n 指定輸出域寬度及精度
m表示數據最小寬度,如果實際數據寬度>m,按實際數據寬度輸出,如果實際數據寬度<m,左邊補空格。n對於實數來講表示n位小數,對於字符串來講,表示截取的字符個數
l l,h 輸出長度的修正
l對整型指定長整型long
例:%ld , %lx , %lo , %lu
l對實型指定雙精度double
例:%lf
h 只用於整型的格式字符修正為short
例:%hd , %hx , %ho , %hu
2) 格式字符 指定輸出項的數據類型和輸出格式。
l d 有符號十進制整數。
l o 無符號八進制數。
l x 無符號十六進制數(小寫的x格式中用小寫字母a,b,c,d,e,f來表示10到15之間的數,大寫的X則用大寫的ABCDEF來表示10到15之間的數)
l u 不帶符號的十進制整數。
l c 輸出一個字符。
l s 輸出一個字符串
l e 以指數形式輸出實型數。
l f 以小數形式輸出實型數(單精度,或稱浮點數)。
l g 自動決定輸出格式為e和f中較短的一種,不打印無效的零。
l % 輸出%
補充:%a(%A) 浮點數、十六進制數字和p-(P-)記數法(C99)
%p 指針
注意:
? 對於單精度數,使用 %f 格式符輸出時,僅前7位是有效數字,小數6位(有效數字定義:在一個近似數中,從左邊第一個不是0的數字起,到精確到末位數止,所有的數字,都叫這個近似數字的有效數字)。
? 對於雙精度數,使用 %lf 格式符輸出時,前16位是有效數字,小數6位。
? 編譯程序只是檢查printf 函數的調用形式,不分析格式控制字符串,如果格式字符與輸出項的類型不匹配,不進行類型轉換(輸出的數為隨機)。
? 格式控制字符串中可以包含轉義字符。
? 格式控制字符串中的普通字符則原樣輸出。
? 輸出項的參數除了常數、變量外還可以是表達式、函數調用。
? %g,%f和%e這三個格式用於打印浮點值,%g格式用於打印那些不需要按列對齊的浮點數特別有用,其作用有:
a) 去掉該數尾多余的零(沒有達到六位的數)
b) 保留六位有效數字(多余六位的)
%e格式用於打印浮點數時,一律顯式地使用指數形式
例如:輸出圓周率時是:3.141593e+00
它們的區別:
%g格式打印出的數是總共6位有效數字
%e格式打印出小數點後的6位有效數字
%f禁止使用指數形式來表示浮點數,因此圓周率輸出為:3.141593(但注意它的精度要求:也是小數點後6位有效數字)
? %E和%G只是在輸出時用大寫字母(E)代替了小寫字母(e)
? %%格式用於打印一個%字符。
? 輸出正負號的技巧,例如:
printf("%+d %+d %+d\n",-5,0,5);
只要在中間加個“+”號就行,作用是輸出符號位(即,數的正負號)
如果不希望正數的前面出現‘+’號,只要在“% d”中間加個“ ”號(即空格)就行,例如:
int i;
for(i=-3;i<=3;i++)
printf("% d\n",i); // 注意%和d之間有一個空格
2. 轉義字符
\a: 蜂鳴,響鈴
\b: 回退:向後退一格
\f: 換頁
\n: 換行,光標到下行行首
\r: 回車,光標到本行行首
\t: 水平制表
\v: 垂直制表
\\: 反斜槓
\': 單引號
\": 雙引號
\?: 問號
\ddd: 1到3位八進制數所代表的字符
\xhh: 1到2位十六進制數所代表的字符
\0: 空字符(NULL),什麼都不做
注:
l \v垂直制表和\f換頁符對屏幕沒有任何影響,但會影響打印機執行響應操作。
l \n其實應該叫回車換行。換行只是換一行;\r回車只是回到行首。
l \t 光標向前移動四格或八格,可以在編譯器裡設置
l \' 在字符裡(即單引號裡)使用。在字符串裡(即雙引號裡)不需要,只要用 ' 即可。
例:
如果在字符'a'中直接使用',就會出現這種情形:'a'' ,編譯器會報錯,因為編譯器會認為多寫了一個單引號。
所以在字符中時,必須使用\',以避免歧義性。
如果為了在字符串裡面添加一個單引號,直接用單引號 ' 即可,如果用轉義字符 \' 的話就會把\'兩者直接算進去。