c語(yǔ)言中char的用法_第1頁(yè)
c語(yǔ)言中char的用法_第2頁(yè)
c語(yǔ)言中char的用法_第3頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、c 語(yǔ)言中 char 的用法c語(yǔ)言中char的用法如下:1.c語(yǔ)言中char的用法簡(jiǎn)介字符型char 用于儲(chǔ)存字符character,如英文字母或標(biāo)點(diǎn)。嚴(yán)格來(lái)說(shuō), char 其實(shí)也是整數(shù)類型 integer type ,因?yàn)?char 類 型儲(chǔ)存的實(shí)際上是整數(shù),而不是字符。計(jì)算機(jī)使用特定的整數(shù)編碼來(lái)表示特定的字符。美國(guó)普遍使用的編碼是ASCII American Standard Code forInformation Interchange 美國(guó)信息交換標(biāo)準(zhǔn)編碼 。例如:ASCII使用65來(lái)代表大寫字母 A,因此存儲(chǔ)字母 A實(shí)際 上存儲(chǔ)的是整數(shù) 65。注意:許多 IBM 大型機(jī)使用另一種編碼

2、-EBCDIC ExtendedBinary-Coded Decimal Interchange Code 擴(kuò)充的二進(jìn)制編碼的十進(jìn)制交 換碼;不同國(guó)家的計(jì)算機(jī)使用的編碼可能完全不同。ASCII的范圍是0至U 127,故而7位bit就足以表示全部 ASCII char 一般占用8位內(nèi)存單元,表示ASCI綽綽有余。許多系統(tǒng)都提供擴(kuò)展 ASCII Extended ASCII ,并且所需空間仍然 在 8 位以內(nèi)。注意,不同的系統(tǒng)提供的擴(kuò)展 ASCII 的編碼方式可能有所不同! 許多字符集超出了 8 位所能表示的范圍例如漢字字符集 ,使用這 種字符集作為根本字符集的系統(tǒng)中, char 可能是 16 位

3、的,甚至可能 是 32 位的總之,C保證char占用空間的大小足以儲(chǔ)存系統(tǒng)所用的根本字符 集的編碼。C語(yǔ)言定義一個(gè)字節(jié)byte 的位數(shù)為char的位數(shù),所以一個(gè)字 節(jié)可能是 16 位,也可能是 32 位,而不僅僅限于 8 位。2. 聲明字符型變量字符型變量的聲明方式和其它類型變量的聲明 方式一樣:char good;char better, best以上代碼聲明了三個(gè)字符型變量: good、 better,禾口 best。3. 字符常量與初始化我們可以使用以下語(yǔ)句來(lái)初始化字符型變量:charch = 'A'這個(gè)語(yǔ)句把ch的值初始化為 A的編碼值。在這個(gè)語(yǔ)句中, 'A&#

4、39; 是字符常量。C 語(yǔ)言中,使用單引號(hào)把字符引起來(lái)就構(gòu)成字符常量。我們來(lái)看另外一個(gè)例子: char fail; /* 聲明一個(gè)字符型變量 */fail = 'F'/* 正確*/fail = "F"/* 錯(cuò)! "F" 是字符串字面量 */ 把字符用雙引號(hào)引起來(lái)構(gòu)成字符串字面量,所以第三個(gè) 語(yǔ)句是錯(cuò)誤的。我們會(huì)在后續(xù)的教程中討論字符串,現(xiàn)在暫且把它放下。 因?yàn)樽址麑?shí)質(zhì)上是以數(shù)字的形式存儲(chǔ)的,所以我們可以直接使用 數(shù)字來(lái)初始化字符變量, 或者給字符變量賦值: char ch = 65; /* 不好的 風(fēng)格 */ 在 ASCII 中, A 的

5、編碼是 65,所以對(duì)于使用 ASCII 的系統(tǒng)來(lái) 說(shuō),這個(gè)語(yǔ)句等同于 char ch = 'A'。使用非ASCII的系統(tǒng)中,65代表的不一定是 A,而有可能是其它 任何字符,所以使用數(shù)字來(lái)初始化字符變量,或者給字符變量賦值是 一種不好的風(fēng)格, 因?yàn)橐浦残蕴盍耍?但是,使用字符常量 例如 'A' 來(lái)初始化字符變量,或者給字符變量賦值,字符變量得到的一定是我 們所期待的字符的編碼值。例如:charch = 'A:無(wú)論在使用任何編碼的系統(tǒng)中,ch都能夠得到 字符 A 所對(duì)應(yīng)的編碼值。這是因?yàn)榫幾g器會(huì)自動(dòng)把 'A' 轉(zhuǎn)化成 A 所對(duì)應(yīng)的編碼值。

6、 因此,我們應(yīng)該使用字符常量來(lái)初始化字符變量,或者給字符變 量賦值;而不要用數(shù)字。有趣的是, C 使用 int 類型來(lái)處理字符常量,而不是 char 類型。例如,在使用32位int的ASCII系統(tǒng)中,以下代碼charch = C;C的 編碼值 67 被存儲(chǔ)于 32 位的內(nèi)存單元中;不過 ch 仍然存儲(chǔ)于 8 位 的內(nèi)存單元中,只是它的值變成了 67。因此,我們可以定義形如 'good' 的乖僻字符常量。因?yàn)槊總€(gè)字符的編碼值占用 8 位的內(nèi)存單元, 所以這個(gè)常量剛好 可以存儲(chǔ)于 32 位的內(nèi)存單元。然而,用這種字符常量初始化字符變量,或者給字符變量賦值的 話,導(dǎo)致的結(jié)果是,字符變

7、量只能得到字符常量的最后 8 位。也就是說(shuō),以下代碼charch = 'good'ch得到的是'd'的值。以后,在沒有特殊說(shuō)明的情況下,我們討論的都是ASCI。ASCI值控制字符ASCI值控制字符ASCI值控制字符ASCI值控制 字符 0 NUL 32 (space) 64 96 '1 SOH 33 ! 65 A 97 a2 STX 34 " 66 B 98 b3 ETX 35 # 67 C 99 c4 EOT 36 ?$ 68 D 100 d5 ENQ 37 % 69 E 101 e6 ACK 38 & 70 F 102 f7 BEL

8、 39 ' 71 G 103 g8 BS 40 ( 72 H 104 h9 HT 41 ) 73 I 105 i10 LF 42 * 74 J 106 j11 VT 43 + 75 K 107 k12 FF 44 , 76 L 108 l13 CR 45 - 77 M 109 m14 SO 46 . 78 N 110 n15 SI 47 / 79 O 111 o16 DLE 48 0 80 P 112 p17 DC1 49 1 81 Q 113 q18 DC2 50 2 82 R 114 r19 DC3 51 3 83 S 115 s20 DC4 52 4 84 T 116 t21 N

9、AK 53 5 85 U 117 u22 SYN 54 6 86 V 118 v23 ETB 55 7 87 W 119 w24 CAN 56 8 88 X 120 x25 EM 57 9 89 Y 121 y26 SUB 58 : 90 Z 122 z27 ESC59 ; 91 123 28 FS 60 94 八 126 31 US 63 ? 95 _ 127 DELNUL空字符VT垂直制表SYN同步SOH標(biāo)題開始FF走紙控 制 ETB 信息組傳送結(jié)束 STX 正文開始 CR 回車 CAN 作廢 ETX 正文 結(jié)束 SO 移位輸出 EM 媒介結(jié)束 End of MediumEOT 傳輸結(jié)束

10、SI 移位輸入 SUB 換置 ENQ 詢問字符 DLE Data Link Escape ESC EscapeACK確認(rèn) DC1設(shè)備控制1 FS 文件分隔符BEL響鈴 DC2設(shè)備 控制 2 GS 組分隔符 BS 退格 DC3 設(shè)備控制 3 RS 記錄分隔符 HT 橫向制表 DC4 設(shè)備控制 4 US 單元分隔符 LF 換行 NAK 否認(rèn) DEL 刪除4.不可打印字符(Nonprinting Characters)有些ASCII字符是不可 打印的。例如退格、另起一行、警報(bào)等。C 語(yǔ)言提供了兩種方法來(lái)表示這種不可打印字符。第一種方法是使用 ASCII 編碼例如, ASCII 編碼中, 7 用于表示

11、警報(bào): char beep = 7;第二種方法 是使用特殊符號(hào)序列,也就是所謂的轉(zhuǎn)義字符escape sequence)s。參見下表:(轉(zhuǎn)義字符含義 a 警報(bào)( Alert (ANSI C) ) b 退格(Backspace f換頁(yè)(Form feed)換行(Newli ne)回車(Carriagereturn )t水平制表符( Horizontal tab) v垂直制表符( Vertical tab)反斜桿( Backslash () )' 單引號(hào)( Singlequote (') ) "雙引號(hào)( Double quote (") ) ?問號(hào)( Quest

12、ion mark (?) )0oo 八進(jìn)制數(shù)( Octal value (o 代表一個(gè)八 進(jìn)制數(shù)字 ) )xhh 十六進(jìn)制數(shù)( Hexadecimal value (h 代表一個(gè)十六進(jìn) 制數(shù)字 ) )給變量賦值的時(shí)候,轉(zhuǎn)義字符必須使用單引號(hào)引住。例如:charnl =''下面我們?cè)敿?xì)學(xué)習(xí)每個(gè)轉(zhuǎn)移字符的含義。a (警報(bào))是 ANSI C89 添加的,用于產(chǎn)生可聽或者可視的警報(bào)。a 產(chǎn)生的效果取決于硬件。一般來(lái)說(shuō),輸出 a 會(huì)產(chǎn)生鳴響。但是在某些系統(tǒng), 輸出 a 不會(huì)產(chǎn)生任何效果, 或者僅僅顯示一個(gè) 特殊字符。標(biāo)準(zhǔn)明確指出, a 不應(yīng)該改變當(dāng)前活潑位置( active positi

13、on)。 所謂活潑位置,是指顯示設(shè)備(顯示器、打字機(jī)、打印機(jī)等等) 顯示下一個(gè)字符的位置。以顯示器為例, 活潑位置就是指光標(biāo)所處的位置, 輸出 a 不會(huì)導(dǎo) 致光標(biāo)移動(dòng)位置b、f 、t ,以及 v 都是輸出設(shè)備控制符。退格符b 使當(dāng)前行的活潑位置后退一個(gè)位置。換頁(yè)符 f 使活潑位置跳到下一頁(yè)的開端。 注:換頁(yè)符可用于控制打印機(jī)換頁(yè),但不會(huì)導(dǎo)致PC 機(jī)的顯示屏換頁(yè)。換行符使活潑位置跳到下一行的開端。 回車符使活潑位置返回當(dāng)前行的開端。 水平制表符t使活潑位置移動(dòng)假設(shè)干個(gè)位置通常是 8個(gè)。 垂直制表符 v 使活潑位置換假設(shè)干行。注:v可用于控制打印機(jī)換假設(shè)干行,但是不會(huì)導(dǎo)致PC機(jī)的顯示屏 換行。、&

14、#39;,以及 " 使我們可以把 , ' 和 " 用作字符常量。如果要打印以下句子:" is called 'backslash'.'我們需要使用如下語(yǔ) 句:printf"" is called 'backslash'.""Ooo 和 xhh 是 ASCII碼的兩 種特殊表示形式。如果想用八進(jìn)制ASCI碼表示字符,可以在八進(jìn)制數(shù)前面加上, 然后用單引號(hào)引起來(lái)。例如: beep = '007'/* 007 代表 a */ 打頭的那些 0可以省略,也就是說(shuō),寫成 &

15、#39;07' 或者 '7' 都一樣。無(wú)論有沒有打頭的 0 , 7 都會(huì)被當(dāng)成八進(jìn)制數(shù)處理。從C89開始,C提供了用十六進(jìn)制表示字符常量的方法:在反斜桿后面寫一個(gè) x ,然后再寫 1 到 3 個(gè)十六進(jìn)制數(shù)字。例如:nl = 'xa'/* xa代表*/注意:使用ASCII碼時(shí),要注意區(qū)分?jǐn)?shù)字4的ASCI碼是52 , '4'代表字符4,而不是數(shù)字4。此外,盡管 ' ' 和 'xa' , 'a' 和 '007' 是等價(jià)的,但是我們應(yīng)該 盡可能使用 ' ' 和 

16、9;a' ,而不要用 'xa' 和 '007' 。這是因?yàn)榍罢咭锥?、便于記憶,而且移植性更高。而后者只?duì)使用ASCI碼的系統(tǒng)有效。和數(shù)字字符。例如:字符 5. 字符輸出 printf 函數(shù)使用 %c 表示輸出字符。因?yàn)樽址且?1 字節(jié)整數(shù)的形式存取的, 所以,如果使用 %d 的 話,輸出的會(huì)是整數(shù)。例如: /* 這個(gè)程序輸出字符以及字符的整數(shù)編碼 */#include int main(void)charch;printf("Please enter a character. ");scanf("%c", &ch); /* 由用戶輸入一個(gè)字符 */printf("The code for %c is %d. ", ch, ch);return 0;請(qǐng)各位自行編譯執(zhí)行此程序,查看其執(zhí)行結(jié)果。輸入字符后記得要按回車鍵。printf 函數(shù)輸出 ch 的值兩次,第一次以字符的形式輸出(因?yàn)楦?式限定符為 c),第二次以十進(jìn)制整數(shù)的形式輸出(因?yàn)楦袷较薅ǚ?是 %d)。注意:格式限定符只是用于指定數(shù)據(jù)的輸出形式,而不是用來(lái)指 定數(shù)據(jù)怎么存儲(chǔ)。6.字符類型的符號(hào)某些編譯器中, char 默認(rèn)是有符號(hào)的( signed)。 對(duì)于這類型的編譯器來(lái)說(shuō), char 的表示范圍通常

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論