7.3.4转义序列

您所在的位置:网站首页 转义字符十六进制数最多三位 7.3.4转义序列

7.3.4转义序列

2024-04-11 07:20| 来源: 网络整理| 查看: 265

一、程序处理字符集中的每一个字符C语言用了什么特殊表示法?

二、为什么需要用到转义序列?

三、转义序列有哪两种?

四、八进制转义序列由什么组成?

五、十六进制转义序列由什么组成?

七、 转义字符的常量的形式是什么?

六、除转义序列还有什么表示字符的特殊表示法?

字符常量通常是用单引号括起来的单个字符。然而,一些特殊符号(比如换行符)是无法采用上述方式书写的,因为它们不可见(非打印字符),或者无法从键盘输入。因此,为了使程序可以处理字符集中的每一个字符,C语言提供了一种特殊的表示法--转义序列。

转义序列共有两种:字符转义序列 和 数字转义序列。 在3.1节已经见过了一部分字符转义序列, 表7-5给出了完整的字符转义序列集合

转义序列\a\b\f\r\t\v表示常用的ASCII控制字符,转义序列\n表示ASCII码的回行符,转义序列\\允许字符常量或字符串包含字符\,转义序列\'允许字符常量包含字符'。而转义序列\“则允许字符串包含字符”, 转义序列\?很少使用。

字符转义序列使用起来很容易,但是它们有一个问题:转义序列列表没有包含所有无法打印的ASCII字符,只包含了最常用的字符。字符转义序列也无法用于表示基本的128个ASCII字符以外的字符。数字转义序列可以表示任何字符,所以它可以解决上述问题。

为了把特殊字符书写成数字转义序列,首先需要在类似附录E那样的表中查找字符的八进制或十六进制值。

例如,某个ASCII码转义字符(十进制值为27)对应的八进制值33,对应十六进制1B。上述八进制或十六进制码可以用来书写转义序列。

八进制转义序列由字符\和跟随其后的一个最多含有三位数字的八进制数组成。(此数必须表示为无符号字符,所以最大值通常是八进制的377。)例如,可以将转义字符写成\33或\033。跟八进制常量不同,转义序列中的八进制数不一定要用0开头。

十六进制转义序列由\x和跟随其后的一个十六进制数组成。虽然标准C对于十六进制数的位数没有限制,但必须表示成无符号字符(因此,如果字符长度是8位,那么十六进制数的值不能超过FF)。若采用这种表示法,可以把转义字符写成\x1b或\x1B的形式。字符x必须小写,但是十六进制的数字(例如b)不限大小写。

作为字符常量使用时,转义序列必须用一对单引号括起来。例如,表示转义字符的常量可以写成'\33'(或'\x1b')的形式。转义序列可能有点隐晦,所以采用#define的方式给他们命名通常是个不错的注意:

#define ESC '\33'  \*ASCII escape character(转义字符)*

正如3.1节看到的那样,转义序列也可以嵌在字符串中使用。

转义序列不是唯一一种用于表示字符的特殊表示法。三字符序列(25.3)提供了一种表示字符#、[、\、]、^、{、|、}和~的方法,这些字符在一些国家的键盘上是打不出来的。C99增加了通用字符名。通用字符名跟转义序列相似,不同之处在于通用字符名可以用在标识符中。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3