%d/%i | 有符號(hào)的十進(jìn)制整數(shù),i 是老式寫法 |
%u | 無符號(hào)十進(jìn)制整數(shù) |
%c | 字符 |
%s | 字符串 |
%f | 單精度浮點(diǎn)數(shù) |
%lf | 雙精度浮點(diǎn)數(shù)(lf 在 C99 開始加入標(biāo)準(zhǔn),意思和 f 相同) |
%p | 以 16 進(jìn)制形式輸出指針 |
%o | 無符號(hào) 8 進(jìn)制整數(shù) |
%n | 到此字符之前為止,一共輸出的字符個(gè)數(shù),不輸出文本 |
%% | 不進(jìn)行轉(zhuǎn)換,輸出字符“ % ”(百分號(hào))本身 |
%x | 無符號(hào) 16 進(jìn)制整數(shù) |
%e(%E) | 浮點(diǎn)數(shù)指數(shù)輸出[ e-(E-)]記數(shù)法] |
整型數(shù)據(jù),英文單詞是Integer,比如-2、-1、0、1、2、1234、等等都是整形數(shù)據(jù)。整型數(shù)據(jù)是不允許出現(xiàn)小數(shù)點(diǎn)和其他特殊符號(hào)的數(shù)據(jù)。
整型數(shù)據(jù)共分為7類,如下圖:
? 其中短整型、整型、和長整型為有符號(hào)數(shù)據(jù)類型。
2.1 取值范圍? 在我們使用不同的數(shù)據(jù)類型時(shí),需要注意的是不要讓數(shù)據(jù)超出范圍,否則就會(huì)造成常說的數(shù)據(jù)溢出。
類型 | 說明 | 字節(jié) | 范圍 |
整型 | int | 4 | -2147483648~2147483647 |
短整型 | short (int) | 2 | -32768~32767 |
長整型 | long(int) | 4 | -2147483648-2147483647 |
無符號(hào)整型 | unsign(int) | 4 | 0-4294967295 |
無符號(hào)短整型 | unsigned short (int) | 2 | 0-65535 |
無符號(hào)長整型 | unsigned long (int) | 4 | 0-4294967295 |
字符型 | char | 1 | 0-255 |
int類型在內(nèi)存中占用了4個(gè)字節(jié),也就是 32位。因?yàn)?int 類型是有符號(hào)的,所以這32 位并不是全部用來存儲(chǔ)數(shù)據(jù)的,使用其中的 1 位來存儲(chǔ)符號(hào),使用其他的 31 位來存儲(chǔ)數(shù)值。為了簡單起見,下面用一個(gè)字節(jié) 8 位來說明。
對(duì)于有符號(hào)整數(shù),以最高位(左邊第 1位)作為符號(hào)位,最高位是 0,表示的數(shù)據(jù)是正數(shù),最高位是 1,表示的數(shù)據(jù)是負(fù)數(shù)。
整型 10 二進(jìn)制形式:
0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
整型-10二進(jìn)制形式:
1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
對(duì)于無符號(hào)整數(shù),因?yàn)楸硎龅亩际欠秦?fù)數(shù),因此一個(gè)字節(jié)中的8位全部用來存儲(chǔ)數(shù)據(jù),不再設(shè)置符號(hào)位。
整型 10 二進(jìn)制形式:
0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
整數(shù)138二進(jìn)制形式:
1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
不同類型的整型數(shù)據(jù)所占的字節(jié)數(shù)不同,在相互轉(zhuǎn)換時(shí)就需要格外留心,不要將過大的數(shù)據(jù)放在過小的數(shù)據(jù)類型中。在把所占字節(jié)較大的數(shù)據(jù)賦值給占字節(jié)較小的數(shù)據(jù)時(shí),應(yīng)防止出現(xiàn)以下的情況。
#includeint main()
{
int a=2147483648;
printf("%d",a);
return 0;
}
這樣賦值后,輸出變量a的值并非預(yù)期的2147483648,而是-2147483648,原因是2147483648超出了int 類型能夠裝載的大值,數(shù)據(jù)產(chǎn)生了溢出。但是換一種輸出格式控制符,如下:
#includeint main()
{
int a=2147483648;
printf("%u",a);
return 0;
}
輸出的結(jié)果就是變量 a 的值,原因是%u 是按照無符號(hào)整型輸出的數(shù)據(jù),而無符號(hào)整型的數(shù)據(jù)范圍上限大于2147483648 這個(gè)值。
例如:
#includeint main()
{
unsigned short a = 256;
char b = a;
printf("%d",b);
return 0;
}
這樣賦值后,輸出變量b的值并非預(yù)期的 256,而是0,原因是256 超出了 char 類型能夠裝載的大值,b只截取了a的低8位的數(shù)據(jù),如下:
當(dāng)把所占字節(jié)較小的數(shù)據(jù)賦值給占字節(jié)較大的數(shù)據(jù)時(shí),可能出現(xiàn)以下兩種情況。第1種情況,當(dāng)字節(jié)較大數(shù)是無符號(hào)數(shù)時(shí),轉(zhuǎn)換時(shí)新擴(kuò)充的位被填充成0。
例如:
#includeint main()
{
char b = 10;
unsigned short a = b;
printf("%u",a);
return 0;
}
這樣賦值后,變量a中輸出的值是 10,原因如下:
第 2種情況,當(dāng)字節(jié)較大數(shù)是有符號(hào)數(shù)時(shí),轉(zhuǎn)換時(shí)新擴(kuò)充的位被填充成符號(hào)位。
例如:
#includeint main()
{
char b = 255;
short a = b;
printf("%d",a);
return 0;
}
這樣賦值后,變量a輸出的值是-1,變量a擴(kuò)充的高8 位,根據(jù)變量b的最高位1 都被填充成了1,所以數(shù)值由正數(shù)變成了負(fù)數(shù),因?yàn)樽兞縜 的最高位符號(hào)位是1。至于為什么16個(gè)1表示的是-1,涉及到二進(jìn)制數(shù)的原碼和補(bǔ)碼問題,這里我們先不深究。轉(zhuǎn)換圖示如下:
3、字符型字符型是整型數(shù)據(jù)中的一種,它存儲(chǔ)的是單個(gè)的字符,存儲(chǔ)方式是按照 ASCII碼(American
Standard Code for Information Interchange,美國信息交換標(biāo)準(zhǔn)碼)的編碼方式,每個(gè)字符占一個(gè)字節(jié)、8位(bit)(關(guān)于ASCII碼,可查閱C語言書籍ASCll表的相關(guān)內(nèi)容)。
字符使用單引號(hào)“ '?”引起來,與變量和其他數(shù)據(jù)類型相區(qū)別,比如'A','5','m','&'等。
又比如有這樣4個(gè)字符:'H','e','l','o',它們在內(nèi)存中存儲(chǔ)的形式如下所示。
01001000 | 01100101 | 01101100 | 01101111 |
H | e | l | o |
#includeint main()
{
char c = 'A';
printf("%c,%u",c,c);
return 0;
}
輸出結(jié)果是:A,65。
此處的65是字符'A'的ASCII碼。
因?yàn)樽址且訟CSII碼形式存儲(chǔ)的,所以字符 A 和整數(shù)65是可以相互轉(zhuǎn)換的。
在字符的家族中,控制符是無法通過正常的字符形式表示的,比如常用的回車、換行、退格等,而需要使用特殊的字符形式來表示,這種特殊字符稱為轉(zhuǎn)義符。
轉(zhuǎn)義符 | 說明 | ASCll |
換行,移動(dòng)到下一行首 | 00001010 | |
\t | 水平制表鍵,移動(dòng)到下一個(gè)制表符位置 | 00001001 |
\b | 退格,向前退一格 | 00001000 |
\r | 回車,移動(dòng)到當(dāng)前行行首 | 00001101 |
\a | 報(bào)警 | 00000111 |
\? | 輸出問號(hào) | 00111111 |
\’ | 輸出單引號(hào) | 00100111 |
\” | 輸出雙引號(hào) | 00100010 |
\ooo | 八進(jìn)制方式輸出字符,o表示八進(jìn)制數(shù) | 空 |
\xhhh | 十六進(jìn)制方式輸出字符,h表示十六進(jìn)制數(shù) | 空 |
\0 | 空字符 | 000000 |
C語言中除了整型外的另外一種數(shù)據(jù)類型就是浮點(diǎn)型,浮點(diǎn)型可以表示有小數(shù)部分的數(shù)據(jù)。浮點(diǎn)型包含 3 種數(shù)據(jù)類型,分別是單精度的 floa t類型、雙精度的 double 類型和長雙精度 long double 類型。
浮點(diǎn)型數(shù)據(jù)的所占字節(jié)、位數(shù)、有效數(shù)字和取值范圍如表所示:
類型 | 字節(jié) | 位數(shù) | 有效數(shù)字 | 取值范圍 |
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 | ———— |
?浮點(diǎn)型數(shù)據(jù)精度高占據(jù)的存儲(chǔ)空間大。
????浮點(diǎn)型數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)方式與整型數(shù)據(jù)不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。根據(jù)浮點(diǎn)型的表現(xiàn)形式不同,我們還可以把浮點(diǎn)型分為小數(shù)形式和指數(shù)形式兩種。
指數(shù)形式如下所示('e'或者'E'都可以):
2.0e3??????????????????????表示2000.0
1.23e-2????????????????????表示0.0123
123e2??????????????????????表示12.3
1.e-3????????????????????????表示0.001
對(duì)于指數(shù)形式,有以下兩點(diǎn)要求:
(1)字母e前面必須要有數(shù)字;
(2) 字母 e的后面必須是整數(shù)。
注 意:浮點(diǎn)數(shù)是有有效位數(shù)要求的,所以要比較兩個(gè)浮點(diǎn)數(shù)是否相等,比較這兩個(gè)浮點(diǎn)數(shù)的差值是不是在給定的范圍內(nèi)即可。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
當(dāng)前文章:C語言?格式字符、整型、字符型、浮點(diǎn)型詳解-創(chuàng)新互聯(lián)
路徑分享:http://m.rwnh.cn/article36/ceedpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、軟件開發(fā)、移動(dòng)網(wǎng)站建設(shè)、外貿(mào)建站、App開發(fā)、網(wǎng)頁設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容