C语言基本类型字符型(char)用法介绍.docx

上传人:李医生 文档编号:11679858 上传时间:2021-08-30 格式:DOCX 页数:11 大小:19.89KB
返回 下载 相关 举报
C语言基本类型字符型(char)用法介绍.docx_第1页
第1页 / 共11页
C语言基本类型字符型(char)用法介绍.docx_第2页
第2页 / 共11页
C语言基本类型字符型(char)用法介绍.docx_第3页
第3页 / 共11页
C语言基本类型字符型(char)用法介绍.docx_第4页
第4页 / 共11页
C语言基本类型字符型(char)用法介绍.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《C语言基本类型字符型(char)用法介绍.docx》由会员分享,可在线阅读,更多相关《C语言基本类型字符型(char)用法介绍.docx(11页珍藏版)》请在三一文库上搜索。

1、蒂C语言基本类型:字符型(char)用法介绍前1.字符型(char)简介覆菱字符型(char)用于储存字符(character),如英文字母或标点。严格来说,char其实也是整数类型( integer type ) ,因为 char 类型储存的实际上是整数,而不是字符。计算机使用特定的整数编码来表示特定的字符。美国普遍使用的编码是ASCII( AmericanStandard Code for Information Interchange 美国信息交换标准编码) 。例如:ASCII使用65来代表大写字母 A,因此存储字母A实际上存储的是整数65。注意:许多IBM 大型机使用另一种编码EBCD

2、IC( Extended Binary-Coded Decimal Interchange Code 扩充的二进制编码的十进制交换码) ;不同国家的计算机使用的编码可能完全不同。 肆建ASCII的范围是 0至ij 127,故而7位(bit)就足以表示全部ASCIL char 一般占用8位内存单元,表示 ASCII绰绰有余。许多系统都提供扩展 ASCII (Extended ASCII),并 且所需空间仍然在8 位以内。注意,不同的系统提供的扩展ASCII 的编码方式可能有所不同!薄蛔许多字符集超出了8位所能表示的范围(例如汉字字符集) ,使用这种字符集作为基本字符集的系统中, char 可能是

3、 16 位的,甚至可能是32 位的。总之, C 保证 char占用空间的大小足以储存系统所用的基本字符集的编码。 C 语言定义一个字节(byte )的位数为 char 的位数,所以一个字节可能是16 位,也可能是32 位,而不仅仅限于8 位。要袂芨2.声明字符型变量袅字符型变量的声明方式和其它类型变量的声明方式一样:蒲唐char good;char better, best;希以上代码声明了三个字符型变量:good、better,和best。蝴3.字符常量与初始化肄芈 我们可以使用以下语句来初始化字符型变量:蚆膈char ch = A;薄A 是字符常量。 C 语言中,*/*/*/菽这个语句把c

4、h的值初始化为A的编码值。在这个语句中,使用单引号把字符引起来就构成字符常量。我们来看另外一个例子:螅/* 声明一个字符型变量/* 正确/* 错! F 是字符串字面量蕨char fail;方fail = F;蓬fail = F;腿黄把字符用双引号引起来构成字符串字面量,所以第三个语句是错误的。我们会在后续的教 程中讨论字符串,现在暂且把它放下。量芈 因为字符实质上是以数字的形式存储的,所以我们可以直接使用数字来初始化字符变量,或者给字符变量赋值:char ch = 65; /* 不好的风格 */腿艿 在 ASCII 中, A 的编码是65,所以对于使用ASCII 的系统来说,这个语句等同于 c

5、har ch=A;。使用非 ASCII的系统中,65代表的不一定是 A,而有可能是其它任何字符,所以使用数字来初始化字符变量, 或者给字符变量赋值是一种不好的风格, 因为移植性太差了! 但是,使用字符常量(例如A )来初始化字符变量,或者给字符变量赋值,字符变量得到的一定是我们所期待的字符的编码值。例如:瞧char ch = A;蓬筮无论在使用任何编码的系统中,ch都能够得到字符A所对应的编码值。这是因为编译器会自动把 A 转化成 A 所对应的编码值。 因此, 我们应该使用字符常量来初始化字符变量,或者给字符变量赋值;而不要用数字。蟋薄有趣的是, C 使用 int 类型来处理字符常量,而不是c

6、har 类型。例如,在使用32 位 int 的 ASCII 系统中,以下代码节膈char ch = C;聿蠢C的编码值67被存储于32位的内存单元中;不过ch仍然存储于8位的内存单元中,只是它的值变成了 67 。 因此, 我们可以定义形如 good 的古怪字符常量。 因为每个字符的编码值占用 8 位的内存单元,所以这个常量刚好可以存储于 32 位的内存单元。然而,用这种字符常量初始化字符变量, 或者给字符变量赋值的话, 导致的结果是, 字符变量只能得到字符常量的最后 8 位。也就是说,以下代码腿char ch = good;腿塞ch得到的是d的值。其以后,在没有特殊说明的情况下,我们讨论的都是

7、ASCII莅ASCII值滕蒙控制字符ASCII值控制字符 ASCII值控制字符ASCII值控制字符肇 0 NUL 32 (space) 64 96 研 1 SOH 33 ! 65 A 97 a薅 2 STX 34 66 B 98 b芃 3 ETX 35 # 67 C 99 c聿 4 EOT 36 $ 68 D 100 d帔 5 ENQ 37 % 69 E 101 e 6 ACK 38 & 70 F 102 f蚀 7 BEL 39 71 G 103 g赚 8 BS 40 (72 H 104 h膈 9 HT 41 ) 73 I 105 i量 10 LF 42 * 74 J 106 j蔓 11 VT

8、 43 + 75 K 107 ks 12 FF 44,76 L 108 l芾 13 CR 45 - 77 M 109 m裂 14 SO 46.78 N 110 n膀 15 SI 47 / 79 O 111 o聿 16 DLE 48 0 80 P 112 p莅 17 DC1 49 1 81 Q 113 q芃 18 DC2 50 2 82 R 114 r羁19 DC3 51 3 83 S 115 s屋 20 DC4 52 4 84 T 116 t螈 21 NAK 53 5 85 U 117 u蚂22 SYN 54 6 86 V 118 v蚁 23 ETB 55 7 87 W 119 w袈 24 C

9、AN 56 8 88 X 120 x袆 25 EM 57 9 89 Y 121 y莆 26 SUB 58 : 90 Z 122 z蒂27 ESC 59 ; 91 123 辑 28 FS 60 94 A 126 膂 31 US 63 ? 95 _ 127 DEL蟆勘芄袂 NUL 空字符 VT 垂直制表 SYN 同步蝇SOH标题开始FF 走纸控制 ETB信息组传送结束菜STX正文开始 CR 回车CAN 作废蚄 ETX 正文结束 SO 移位输出 EM 媒介结束 End of Medium董EOT传输结束SI移位输入SUB换置 ENQ 询问字符 DLE Data Link Escape ESC Esc

10、apew ACK确认DC1设备控制1 FS 文件分隔符肃 BEL 响铃 DC2 设备控制 2 GS 组分隔符希BS 退格DC3设备控制3 RS 记录分隔符蜗HT横向制表DC4设备控制4 US单元分隔符噩LF换彳T NAK否定DEL删除蔽膈虿芨4.不可打印字符(Nonprinting Characters)滕蚀蜜 有些ASCII字符是不可打印的。例如退格、另起一行、警报等。C语言提供了两种方法来表示这种不可打印字符。蒇蛔第一种方法是使用ASCII编码。例如,ASCII编码中,7用于表示警报:蔗薇char beep = 7;薅*第二种方法是使用特殊符号序列,也就是所谓的转义字符escape seq

11、uences)。参见下表: (虿转义字符含义赣a警报( Alert (ANSI C) )蒄b退格(Backspace)袁f换页( Form feed )蚀换行( Newline )肆回车( Carriage return )蠢t水平制表符( Horizontal tab )薁v垂直制表符( Vertical tab )蒈反斜杆( Backslash () )蒈单引号( Single quote () )蒂双引号(Double quote () )前?问号( Question mark (?) )覆0oo八进制数( Octal value (o 代表一个八进制数字) )鬟xhh十六进制数( He

12、xadecimal value (h 代表一个十六进制数字) )肆建给变量赋值的时候,转义字符必须使用单引号引住。例如:薄蛔char nl =;要袂 下面我们详细学习每个转移字符的含义。芨a 产生的效果取决a (警报)是ANSI C89 添加的,用于产生可听或者可视的警报。于硬件。一般来说,输出 a 会产生鸣响。但是在某些系统,输出 a 不会产生任何效果,或者仅仅显示一个特殊字符。 标准明确指出, a 不应该改变当前活跃位置( active position ) 。所谓活跃位置,是指显示设备(显示器、打字机、打印机等等)显示下一个字符的位置。以显示器为例,活跃位置就是指光标所处的位置,输出 a

13、 不会导致光标移动位置。袅蒲b、f、 、t,以及v都是输出设备控制符。退格符(b)使当前行的活跃位置后退一个位置。 换页符 (f ) 使活跃位置跳到下一页的开端。 注: 换页符可用于控制打印机换页,但不会导致PC 机的显示屏换页。 换行符 ( ) 使活跃位置跳到下一行的开端。 回车符 ( )使活跃位置返回当前行的开端。 水平制表符( t ) 使活跃位置移动若干个位置 (通常是 8 个) 。垂直制表符(v )使活跃位置换若干行。注:v 可用于控制打印机换若干行,但是不会导致PC机的显示屏换行。滕 、,以及使我们可以把 ,和用作字符常量。如果要打印以下句子:英希 is called backsla

14、sh.蔓IT我们需要使用如下语句:蛔肄 printf( is called backslash.);芈蚆膈薄箴螅蓬腿黄 0oo和xhh是ASCII码的两种特殊表示形式。如果想用八进制 ASCII码表示字符,可 以在八进制数前面加上 ,然后用单引号引起来。例如:量芈beep = 007;/*007 代表 a */弋螅 打头的那些0 可以省略,也就是说,写成07 或者 7 都一样。无论有没有打头的 0 ,7 都会被当成八进制数处理。腿艿 从 C89 开始, C 提供了用十六进制表示字符常量的方法:在反斜杆后面写一个x ,然后再写 1 到 3 个十六进制数字。例如:瞧nl = xa;/* xa 代表

15、 */蓬筮 注意:使用 ASCII码时,要注意区分数字 4的ASCII码是52 , 4代表字符4 ,而不 是数字 4 。 此外, 尽管 和 xa , a 和 007 是等价的, 但是我们应该尽可能使用 和 a ,而不要用 xa 和 007 。这是因为前者易懂、便于记忆,而且移植性更高。而后者只对使用ASCII码的系统有效。和数字字符。例如:字符蟋薄 5. 字符输出节膈printf 函数使用 %c 表示输出字符。 因为字符是以1 字节整数的形式存取的, 所以,如果使用 %d 的话,输出的会是整数。例如:籍/*这个程序输出字符以及字符的整数编码*/辐#include 腿mint main(void

16、)蒙螃 char ch;-+-几莅 printf(Please enter a character. );滕 scanf(%c, &ch);/*由用户输入一个字符*/蒙 printf(The code for %c is %d. , ch, ch);肇妍 return 0;薅芃聿请各位自行编译执行此程序,查看其执行结果。输入字符后记得要按回车键。蟋箍printf函数输出ch的值两次,第一次以字符的形式输出(因为格式限定符为c),第二次以十进制整数的形式输出(因为格式限定符是%d) 。注意:格式限定符只是用于指定数据的输出形式,而不是用来指定数据怎么存储。蚀赚6.字符类型的符号膈char某些编译

17、器中, char 默认是有符号的( signed ) 。对于这类型的编译器来说,的表示范围通常是-128 到 127 。 而另外一些编译器中, char 默认是无符号的 ( unsigned ) 。对于这类型的编译器来说, char 的表示范围通常是0 到 255 。一般来说,编译器的使用说明会注明它默认把char 当作有符号的还是无符号的。从C89开始,我们可以使用关键字 signed和unsigned来修饰 char。这么一来,无论编译器默认char 是有符号的也好,无符号的也罢,我们都可以用signed char 表示有符号 char ,也可以用 unsigned char 表示无符号char 。芾裂膀 参考资料: C Primer 5th Edition聿C99标准莅For personal use only in study and research; not for commercial use

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1