


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c 语言中 char 的用法c语言中char的用法如下:1.c语言中char的用法简介字符型char 用于储存字符character,如英文字母或标点。严格来说, char 其实也是整数类型 integer type ,因为 char 类 型储存的实际上是整数,而不是字符。计算机使用特定的整数编码来表示特定的字符。美国普遍使用的编码是ASCII American Standard Code forInformation Interchange 美国信息交换标准编码 。例如:ASCII使用65来代表大写字母 A,因此存储字母 A实际 上存储的是整数 65。注意:许多 IBM 大型机使用另一种编码
2、-EBCDIC ExtendedBinary-Coded Decimal Interchange Code 扩充的二进制编码的十进制交 换码;不同国家的计算机使用的编码可能完全不同。ASCII的范围是0至U 127,故而7位bit就足以表示全部 ASCII char 一般占用8位内存单元,表示ASCI绰绰有余。许多系统都提供扩展 ASCII Extended ASCII ,并且所需空间仍然 在 8 位以内。注意,不同的系统提供的扩展 ASCII 的编码方式可能有所不同! 许多字符集超出了 8 位所能表示的范围例如汉字字符集 ,使用这 种字符集作为根本字符集的系统中, char 可能是 16 位
3、的,甚至可能 是 32 位的总之,C保证char占用空间的大小足以储存系统所用的根本字符 集的编码。C语言定义一个字节byte 的位数为char的位数,所以一个字 节可能是 16 位,也可能是 32 位,而不仅仅限于 8 位。2. 声明字符型变量字符型变量的声明方式和其它类型变量的声明 方式一样:char good;char better, best以上代码声明了三个字符型变量: good、 better,禾口 best。3. 字符常量与初始化我们可以使用以下语句来初始化字符型变量:charch = 'A'这个语句把ch的值初始化为 A的编码值。在这个语句中, 'A
4、39; 是字符常量。C 语言中,使用单引号把字符引起来就构成字符常量。我们来看另外一个例子: char fail; /* 声明一个字符型变量 */fail = 'F'/* 正确*/fail = "F"/* 错! "F" 是字符串字面量 */ 把字符用双引号引起来构成字符串字面量,所以第三个 语句是错误的。我们会在后续的教程中讨论字符串,现在暂且把它放下。 因为字符实质上是以数字的形式存储的,所以我们可以直接使用 数字来初始化字符变量, 或者给字符变量赋值: char ch = 65; /* 不好的 风格 */ 在 ASCII 中, A 的
5、编码是 65,所以对于使用 ASCII 的系统来 说,这个语句等同于 char ch = 'A'。使用非ASCII的系统中,65代表的不一定是 A,而有可能是其它 任何字符,所以使用数字来初始化字符变量,或者给字符变量赋值是 一种不好的风格, 因为移植性太差了! 但是,使用字符常量 例如 'A' 来初始化字符变量,或者给字符变量赋值,字符变量得到的一定是我 们所期待的字符的编码值。例如:charch = 'A:无论在使用任何编码的系统中,ch都能够得到 字符 A 所对应的编码值。这是因为编译器会自动把 'A' 转化成 A 所对应的编码值。
6、 因此,我们应该使用字符常量来初始化字符变量,或者给字符变 量赋值;而不要用数字。有趣的是, C 使用 int 类型来处理字符常量,而不是 char 类型。例如,在使用32位int的ASCII系统中,以下代码charch = C;C的 编码值 67 被存储于 32 位的内存单元中;不过 ch 仍然存储于 8 位 的内存单元中,只是它的值变成了 67。因此,我们可以定义形如 'good' 的乖僻字符常量。因为每个字符的编码值占用 8 位的内存单元, 所以这个常量刚好 可以存储于 32 位的内存单元。然而,用这种字符常量初始化字符变量,或者给字符变量赋值的 话,导致的结果是,字符变
7、量只能得到字符常量的最后 8 位。也就是说,以下代码charch = 'good'ch得到的是'd'的值。以后,在没有特殊说明的情况下,我们讨论的都是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标题开始FF走纸控 制 ETB 信息组传送结束 STX 正文开始 CR 回车 CAN 作废 ETX 正文 结束 SO 移位输出 EM 媒介结束 End of MediumEOT 传输结束
10、SI 移位输入 SUB 换置 ENQ 询问字符 DLE Data Link Escape ESC EscapeACK确认 DC1设备控制1 FS 文件分隔符BEL响铃 DC2设备 控制 2 GS 组分隔符 BS 退格 DC3 设备控制 3 RS 记录分隔符 HT 横向制表 DC4 设备控制 4 US 单元分隔符 LF 换行 NAK 否认 DEL 删除4.不可打印字符(Nonprinting Characters)有些ASCII字符是不可 打印的。例如退格、另起一行、警报等。C 语言提供了两种方法来表示这种不可打印字符。第一种方法是使用 ASCII 编码例如, ASCII 编码中, 7 用于表示
11、警报: char beep = 7;第二种方法 是使用特殊符号序列,也就是所谓的转义字符escape sequence)s。参见下表:(转义字符含义 a 警报( Alert (ANSI C) ) b 退格(Backspace f换页(Form feed)换行(Newli ne)回车(Carriagereturn )t水平制表符( Horizontal tab) v垂直制表符( Vertical tab)反斜杆( Backslash () )' 单引号( Singlequote (') ) "双引号( Double quote (") ) ?问号( Quest
12、ion mark (?) )0oo 八进制数( Octal value (o 代表一个八 进制数字 ) )xhh 十六进制数( Hexadecimal value (h 代表一个十六进 制数字 ) )给变量赋值的时候,转义字符必须使用单引号引住。例如:charnl =''下面我们详细学习每个转移字符的含义。a (警报)是 ANSI C89 添加的,用于产生可听或者可视的警报。a 产生的效果取决于硬件。一般来说,输出 a 会产生鸣响。但是在某些系统, 输出 a 不会产生任何效果, 或者仅仅显示一个 特殊字符。标准明确指出, a 不应该改变当前活泼位置( active positi
13、on)。 所谓活泼位置,是指显示设备(显示器、打字机、打印机等等) 显示下一个字符的位置。以显示器为例, 活泼位置就是指光标所处的位置, 输出 a 不会导 致光标移动位置b、f 、t ,以及 v 都是输出设备控制符。退格符b 使当前行的活泼位置后退一个位置。换页符 f 使活泼位置跳到下一页的开端。 注:换页符可用于控制打印机换页,但不会导致PC 机的显示屏换页。换行符使活泼位置跳到下一行的开端。 回车符使活泼位置返回当前行的开端。 水平制表符t使活泼位置移动假设干个位置通常是 8个。 垂直制表符 v 使活泼位置换假设干行。注:v可用于控制打印机换假设干行,但是不会导致PC机的显示屏 换行。、&
14、#39;,以及 " 使我们可以把 , ' 和 " 用作字符常量。如果要打印以下句子:" is called 'backslash'.'我们需要使用如下语 句:printf"" is called 'backslash'.""Ooo 和 xhh 是 ASCII码的两 种特殊表示形式。如果想用八进制ASCI码表示字符,可以在八进制数前面加上, 然后用单引号引起来。例如: beep = '007'/* 007 代表 a */ 打头的那些 0可以省略,也就是说,写成 &
15、#39;07' 或者 '7' 都一样。无论有没有打头的 0 , 7 都会被当成八进制数处理。从C89开始,C提供了用十六进制表示字符常量的方法:在反斜杆后面写一个 x ,然后再写 1 到 3 个十六进制数字。例如:nl = 'xa'/* xa代表*/注意:使用ASCII码时,要注意区分数字4的ASCI码是52 , '4'代表字符4,而不是数字4。此外,尽管 ' ' 和 'xa' , 'a' 和 '007' 是等价的,但是我们应该 尽可能使用 ' ' 和
16、9;a' ,而不要用 'xa' 和 '007' 。这是因为前者易懂、便于记忆,而且移植性更高。而后者只对使用ASCI码的系统有效。和数字字符。例如:字符 5. 字符输出 printf 函数使用 %c 表示输出字符。因为字符是以 1 字节整数的形式存取的, 所以,如果使用 %d 的 话,输出的会是整数。例如: /* 这个程序输出字符以及字符的整数编码 */#include int main(void)charch;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 默认是有符号的( signed)。 对于这类型的编译器来说, char 的表示范围通常
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园课后辅导服务合作合同(2篇)
- 2025私人借款合同范本下载
- 牙龈增生的临床护理
- 丰苹果肌的临床护理
- 漂亮的瓶子教学设计及反思
- 2025办公室租赁合同简单样本
- 2025汽车租赁合同协议书模板示例
- 《流行性感冒防控》课件
- 2025年统计师之初级统计工作实务提升训练试卷B卷附答案
- 2025年一级建造师之一建水利水电工程实务综合检测试卷A卷含答案
- 蓝色商务企业发展历程时间轴模板课件
- 传热学课后习题答案
- 河北省县市乡镇卫生院社区卫生服务中心基本公共卫生服务医疗机构名单目录地址2415家
- DB15T 1771-2019 草原沙葱萤叶甲综合防控技术规程
- 通用电气EHS体系课件
- 妇幼智慧盆底中心建设方案-V1.1
- 金融集团监管原则和并表风险管理
- 有色金属工业项目可行性研究报告编制原则规定(试行)
- 教练技术一阶段讲义
- 玻璃配合料的制备
- 贵州省建设工程安全监督备案登记表
评论
0/150
提交评论