總結:所以我想讓8位的數據只輸出其中6位沒辦法,只能輸出4位(hX,h表示)或者只輸出2位
一個h表示short,即short int兩個h表示short short,即char(8位二進制)。%hhx用于輸出char%hx用于輸出shortint(16位二進制).
輸出特殊字符
printf("\"");輸出"
printf("\'");輸出'
printf("\\");輸出\
%x即按十六進制輸出,英文字母小寫,右對齊。
X有以下變化:英文字母變大寫,如果輸出字符不足兩位的,輸出兩位寬度,右對齊,空的一位補0。超過兩位的,所有位全部輸出。
printf();
%x16進制小寫字母%o8進制
2015年5月30日11:06:39:printf函數稱為格式輸出函數,其關鍵字最末一個字母f即為“格式”(format)之意。其功能是按用戶指定的格式,把指定的數據顯示到顯示器屏幕上。
printf函數調用的一般形式printf函數是一個標準庫函數,它的函數原型在頭文件“stdio.h”中。
但作為一個特例,不要求在使用 printf 函數之前必須包含stdio.h文件。printf函數調用的一般形式為: printf(“格式控制字符串”,輸出表列)其中格式控制字符串用于指定輸出格式。格式控制串可由格式字符串和非格式字符串兩種組成。格式字符串是以%開頭的字符串,在%后面跟有各種格式字符,以說明輸出數據的類型、形式、長度、小數位數等。如:
- “%ld”表示按十進制長整型輸出;
- “%c”表示按字符型輸出等。
非格式字符串原樣輸出,在顯示中起提示作用。輸出表列中給出了各個輸出項,要求格式字符串和各輸出項在數量和類型上應該一一對應。
格式字符串在Turbo C中格式字符串的一般形式為:
[標志][輸出最小寬度][.精度][長度]類型。其中方括號[]中的項為可選項。
各項的意義介紹如下。
1) 類型
類型字符用以表示輸出數據的類型,其格式符和意義如下表所示:
格式字符
意義
d
以十進制形式輸出帶符號整數(正數不輸出符號)
o
以八進制形式輸出無符號整數(不輸出前綴0)
x,X
以十六進制形式輸出無符號整數(不輸出前綴Ox)
u
以十進制形式輸出無符號整數
f
以小數形式輸出單、雙精度實數
e,E
以指數形式輸出單、雙精度實數
g,G
以%f或%e中較短的輸出寬度輸出單、雙精度實數
c
輸出單個字符
s
輸出字符串
2) 標志
標志字符為 -、+、# 和空格四種,其意義下表所示:
標 志
意義
-
結果左對齊,右邊填空格
+
輸出符號(正號或負號)
空格
輸出值為正時冠以空格,為負時冠以負號
#
對c、s、d、u類無影響;對o類,在輸出時加前綴o;對x類,在輸出時加前綴0x;對e、g、f類當結果有小數時才給出小數點。
3) 輸出最小寬度
用十進制整數來表示輸出的最少位數。若實際位數多于定義的寬度,則按實際位數輸出,若實際位數少于定義的寬度則補以空格或0。
4) 精度
精度格式符以“.”開頭,后跟十進制整數。本項的意義是:如果輸出數字,則表示小數的位數;如果輸出的是字符,則表示輸出字符的個數;若實際位數大于所定義的精度數,則截去超過的部分。
5) 長度
長度格式符為h、l兩種,h表示按短整型量輸出,l表示按長整型量輸出。
- #include
-
- #include
-
- int
- main()
- {
- char
- c, s[20];
- int
- a=1234;
- float
- f=3.141592653589;
- double
- x=0.12345678912345678;
- strcpy(s, "Hello,World"
- );
- c='\x41'
- ;
- printf("a=%d\n"
- , a);
- //按照十進制整數格式輸出,顯示 a=1234
-
- printf("a=%d%%\n"
- , a);
- //輸出%號 結果 a=1234%
-
- printf("a=m\n"
- , a);
- //輸出6位十進制整數 左邊補空格,顯示 a= 1234
-
- printf("a=d\n"
- , a);
- //輸出6位十進制整數 左邊補0,顯示 a=001234
-
- printf("a=-\n"
- , a);
- //a超過2位,按實際輸出 a=1234
-
- printf("a=%-6d\n"
- , a);
- ///輸出6位十進制整數 右邊補空格,顯示 a=1234
-
- printf("f=%f\n"
- , f);
- //浮點數有效數字是7位,結果 f=3.141593
-
- printf("f=6.4f\n"
- , f);
- //輸出6列,小數點后4位,結果 f=3.1416
-
- printf("x=%lf\n"
- , x);
- //輸出長浮點數 x=0.123457
-
- printf("x=.16lf\n"
- , x);
- //輸出18列,小數點后16位,x=0.1234567891234567
-
- printf("c=%c\n"
- , c);
- //輸出字符 c=A
-
- printf("c=%x\n"
- , c);
- //以十六進制輸出字符的ASCII碼 c=41
-
- printf("s[]=%s\n"
- , s);
- //輸出數組字符串s[]=Hello,World
-
- printf("s[]=%6.9s\n"
- , s);
- //輸出最多9個字符的字符串 s[]=Hello,Wor
-
- return
- 0;
- }
復制代碼
|