| %d/%i | 有符號的十進制整數,i 是老式寫法 |
| %u | 無符號十進制整數 |
| %c | 字符 |
| %s | 字符串 |
| %f | 單精度浮點數 |
| %lf | 雙精度浮點數(lf 在 C99 開始加入標準,意思和 f 相同) |
| %p | 以 16 進制形式輸出指針 |
| %o | 無符號 8 進制整數 |
| %n | 到此字符之前為止,一共輸出的字符個數,不輸出文本 |
| %% | 不進行轉換,輸出字符“ % ”(百分號)本身 |
| %x | 無符號 16 進制整數 |
| %e(%E) | 浮點數指數輸出[ e-(E-)]記數法] |
整型數據,英文單詞是Integer,比如-2、-1、0、1、2、1234、等等都是整形數據。整型數據是不允許出現小數點和其他特殊符號的數據。
整型數據共分為7類,如下圖:

? 其中短整型、整型、和長整型為有符號數據類型。
2.1 取值范圍? 在我們使用不同的數據類型時,需要注意的是不要讓數據超出范圍,否則就會造成常說的數據溢出。
| 類型 | 說明 | 字節 | 范圍 |
| 整型 | int | 4 | -2147483648~2147483647 |
| 短整型 | short (int) | 2 | -32768~32767 |
| 長整型 | long(int) | 4 | -2147483648-2147483647 |
| 無符號整型 | unsign(int) | 4 | 0-4294967295 |
| 無符號短整型 | unsigned short (int) | 2 | 0-65535 |
| 無符號長整型 | unsigned long (int) | 4 | 0-4294967295 |
| 字符型 | char | 1 | 0-255 |
int類型在內存中占用了4個字節,也就是 32位。因為 int 類型是有符號的,所以這32 位并不是全部用來存儲數據的,使用其中的 1 位來存儲符號,使用其他的 31 位來存儲數值。為了簡單起見,下面用一個字節 8 位來說明。
對于有符號整數,以最高位(左邊第 1位)作為符號位,最高位是 0,表示的數據是正數,最高位是 1,表示的數據是負數。
整型 10 二進制形式:
| 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
整型-10二進制形式:
| 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
對于無符號整數,因為表述的都是非負數,因此一個字節中的8位全部用來存儲數據,不再設置符號位。
整型 10 二進制形式:
| 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
整數138二進制形式:
| 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
不同類型的整型數據所占的字節數不同,在相互轉換時就需要格外留心,不要將過大的數據放在過小的數據類型中。在把所占字節較大的數據賦值給占字節較小的數據時,應防止出現以下的情況。
#includeint main()
{
int a=2147483648;
printf("%d",a);
return 0;
} 這樣賦值后,輸出變量a的值并非預期的2147483648,而是-2147483648,原因是2147483648超出了int 類型能夠裝載的大值,數據產生了溢出。但是換一種輸出格式控制符,如下:
#includeint main()
{
int a=2147483648;
printf("%u",a);
return 0;
} 輸出的結果就是變量 a 的值,原因是%u 是按照無符號整型輸出的數據,而無符號整型的數據范圍上限大于2147483648 這個值。
例如:
#includeint main()
{
unsigned short a = 256;
char b = a;
printf("%d",b);
return 0;
} 這樣賦值后,輸出變量b的值并非預期的 256,而是0,原因是256 超出了 char 類型能夠裝載的大值,b只截取了a的低8位的數據,如下:

當把所占字節較小的數據賦值給占字節較大的數據時,可能出現以下兩種情況。第1種情況,當字節較大數是無符號數時,轉換時新擴充的位被填充成0。
例如:
#includeint main()
{
char b = 10;
unsigned short a = b;
printf("%u",a);
return 0;
} 這樣賦值后,變量a中輸出的值是 10,原因如下:

第 2種情況,當字節較大數是有符號數時,轉換時新擴充的位被填充成符號位。
例如:
#includeint main()
{
char b = 255;
short a = b;
printf("%d",a);
return 0;
} 這樣賦值后,變量a輸出的值是-1,變量a擴充的高8 位,根據變量b的最高位1 都被填充成了1,所以數值由正數變成了負數,因為變量a 的最高位符號位是1。至于為什么16個1表示的是-1,涉及到二進制數的原碼和補碼問題,這里我們先不深究。轉換圖示如下:

字符型是整型數據中的一種,它存儲的是單個的字符,存儲方式是按照 ASCII碼(American
Standard Code for Information Interchange,美國信息交換標準碼)的編碼方式,每個字符占一個字節、8位(bit)(關于ASCII碼,可查閱C語言書籍ASCll表的相關內容)。
字符使用單引號“ '?”引起來,與變量和其他數據類型相區別,比如'A','5','m','&'等。
又比如有這樣4個字符:'H','e','l','o',它們在內存中存儲的形式如下所示。
| 01001000 | 01100101 | 01101100 | 01101111 |
| H | e | l | o |
#includeint main()
{
char c = 'A';
printf("%c,%u",c,c);
return 0;
} 輸出結果是:A,65。
此處的65是字符'A'的ASCII碼。
因為字符是以ACSII碼形式存儲的,所以字符 A 和整數65是可以相互轉換的。
在字符的家族中,控制符是無法通過正常的字符形式表示的,比如常用的回車、換行、退格等,而需要使用特殊的字符形式來表示,這種特殊字符稱為轉義符。
| 轉義符 | 說明 | ASCll |
| 換行,移動到下一行首 | 00001010 | |
| \t | 水平制表鍵,移動到下一個制表符位置 | 00001001 |
| \b | 退格,向前退一格 | 00001000 |
| \r | 回車,移動到當前行行首 | 00001101 |
| \a | 報警 | 00000111 |
| \? | 輸出問號 | 00111111 |
| \’ | 輸出單引號 | 00100111 |
| \” | 輸出雙引號 | 00100010 |
| \ooo | 八進制方式輸出字符,o表示八進制數 | 空 |
| \xhhh | 十六進制方式輸出字符,h表示十六進制數 | 空 |
| \0 | 空字符 | 000000 |
C語言中除了整型外的另外一種數據類型就是浮點型,浮點型可以表示有小數部分的數據。浮點型包含 3 種數據類型,分別是單精度的 floa t類型、雙精度的 double 類型和長雙精度 long double 類型。

浮點型數據的所占字節、位數、有效數字和取值范圍如表所示:
| 類型 | 字節 | 位數 | 有效數字 | 取值范圍 |
| float | 4 | 32 | 6~7 | -1.4e-45~3.4e38 |
| double | 8 | 64 | 15~16 | -4.9e-324~1.8e308 |
| long?double | 8 | 128 | 18~19 | ———— |
?浮點型數據精度高占據的存儲空間大。
????浮點型數據在計算機內存中的存儲方式與整型數據不同,浮點型數據是按照指數形式存儲的。系統把一個浮點型數據分成小數部分和指數部分,分別存放。指數部分采用規范化的指數形式。根據浮點型的表現形式不同,我們還可以把浮點型分為小數形式和指數形式兩種。

指數形式如下所示('e'或者'E'都可以):
2.0e3??????????????????????表示2000.0
1.23e-2????????????????????表示0.0123
123e2??????????????????????表示12.3
1.e-3????????????????????????表示0.001
對于指數形式,有以下兩點要求:
(1)字母e前面必須要有數字;
(2) 字母 e的后面必須是整數。
注 意:浮點數是有有效位數要求的,所以要比較兩個浮點數是否相等,比較這兩個浮點數的差值是不是在給定的范圍內即可。
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
當前文章:C語言?格式字符、整型、字符型、浮點型詳解-創新互聯
路徑分享:http://www.yijiale78.com/article36/ceedpg.html
成都網站建設公司_創新互聯,為您提供全網營銷推廣、軟件開發、移動網站建設、外貿建站、App開發、網頁設計公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯