char ch[2];
sprintf(ch, "%x", 100);
printf("字串%%s輸出:%s\n", ch);
printf("字元%%c輸出ch:%c\n", ch);
printf("字元%%c輸出ch[0]:%c\n", ch[0]);
printf("字元%%c輸出ch[1]:%c\n", ch[1]);
printf("十六進製制%%x輸出ch:%x\n", ch);
printf("十六進製制%%x輸出ch[0]:%x\n", ch[0]);
printf("十六進製制%%x輸出ch[1]:%x\n", ch[1]);
printf("十進位制%%d輸出ch:%d\n", ch);
printf("十進位制%%d輸出ch[0]:%d\n", ch[0]);
printf("十進位制%%d輸出ch[1]:%d\n", ch[1]);
輸出:
字串%s輸出:64
字元%c輸出ch:>
字元%c輸出ch[0]:6
字元%c輸出ch[1]:4
十六進製制%x輸出ch:22ff3e
十六進製制%x輸出ch[0]:36
十六進製制%x輸出ch[1]:34
十進位制%d輸出ch:2293566
十進位制%d輸出ch[0]:54
十進位制%d輸出ch[1]:52
說明:int sprintf( char *buffer, const char *format, [ argument] … );
sprintf指的是字串格式化命令,主要功能是把格式化的資料寫入某個字串中。
100十六進製制為64,ch中存入'6''4',以%c字元輸出時ch[0]='6',ch[1]='4'
以%d十進位制數輸出時,對應這兩個字元的acsii碼為 54 52
同理,%x十六進製制輸出時,對應54 52的十六進製制36 34
printf("字元%%c輸出ch:%c\n", ch);
printf("十六進製制%%x輸出ch:%x\n", ch);
printf("十進位制%%d輸出ch:%d\n", ch);
這兩個輸出的結果是不好理解的,剛開始以為是由高位54低位52組成的乙個十六位數,測試了多次結果都不對,後來在vs裡面測試發現這個結果每次都是變化的,才想到這是指標,也就是ch的位址。
char是「特殊的」陣列,是由char組成的字串,陣列名代表位址,也是指向存放該陣列的位址的指標。對於陣列名,當以%s輸出時,就將各個字元以整體字串的形式輸出,以數字的形式(包括%c %d %x)時,輸出位址,而%c是1個位元組,位址是4個位元組,所以位址被擷取為1個位元組後輸出,將4個位元組的int型別擷取為1個位元組char型別,測試後%d會輸出63,對應ascii為'?'
可變引數函式顧名思義,就是函式引數個數是未知的是可變的。sprintf中[ argument]的引數和format中的格式化符號一一對應。
例如:
char buffer[2];
sprintf(buffer, "%x", 1000);
printf("格式化後buffer:%s\n長度:%d\n", buffer, strlen(buffer));
輸出:
格式化後buffer:3e8
長度:3
說明:首先定義乙個長度為2的char陣列buffer,然後使用sprintf將1000以十六進製制存入buffer,1000十六進製制為3e8,所有buffer長度變為3,發生溢位。
union a
;union a a;
a.i=2293567;
printf("擷取後:十進位制%d,字元%c\n", a.c, a.c);
輸出:
擷取後:十進位制63,字元?
c 十進位制 八進位制 十六進製制格式化輸出
在輸出資料時,為簡便起見,往往不指定輸出的格式,由系統根據資料的型別採取預設的格式,但有時希望資料按指定的格式輸出,如要求以十六進製制或八進位制形式輸出乙個 整數,對輸出的小數只保留兩位小數等。有兩種方法可以達到此目的。一種是我們已經介紹過的使用控制符的方法 詳情請檢視 c 輸入cout與輸出cin...
十六進製制轉八進位制的快捷方法 巧用格式化輸入輸出
最近刷題的時候遇到乙個基礎題,就是將16進製制數轉為8進製數。咋一看極其簡單,用二進位製做中介即可,簡單規劃了一下就開始動手了。問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由0 9 大寫字母a f組成的字串,表...
為什麼需要八進位制和十六進製制 十六進製制的意義何在
程式設計中,我們常用的還是10進製.畢竟c c 是高階語言。比如 int a 100,b 99 不過,由於資料在計算機中的表示,最終以二進位制的形式存在,所以有時候使用二進位制,可以更直觀地解決 問題。但二進位制數太長了。比如int 型別占用4個位元組,32位。比如100,用int型別的二進位制數表...