C/C++中的转义字符

在C语言中有三种转义字符,它们是:通常转义字符、八进制转义字符和十六进制转义字符。编程

一、通常转义字符

这种转义字符,虽然在形式上由两个字符组成,但只表明一个字符。经常使用的通常转义字符为:spa

\a  \n  \t  \v  \b  \r  \f  \\  \’  \"

其中,转义字符'\\'表明的反斜杠"\"、转义字符’\’’表明的字符"'"和转义字符'\"'表明的字符"""。code

Q:其自己就是可显示字符,为何还要对它转义呢?字符串

A:由于它们的原有的字符形式已做它用,其中,单引号用做区分字符常量的括号,双引号用做区分字符串(下面将要介绍字符串)的括号,而反斜杠自己已用来表示转义字符的开头,所以必须对它们用转义字符从新声明。class

二、八进制转义字符

(1)它是由反斜杠'\'和随后的1~3个八进制数字构成的字符序列。程序

例如,'\60'、'\101'、'\141'分别表示字符'0'、'A'和'a'。由于字符'0'、'A'和'a'的ASCII码的八进制值分别为60、101和141。计算机

(2)字符集中的全部字符均可以用八进制转义字符表示,能够在八进制数字前面加上一个0来表示八进制转义字符语言

三、十六进制转义字符

(1)它是由反斜杠'\'和字母x(或X)及随后的1~2个十六进制数字构成的字符序列。字符集

例如,'\x30'、'\x41'、'\X61'分别表示字符'0'、'A'和'a'。由于字符'0'、'A'和'a'的ASCII码的十六进制值分别为0x30、0x41和0x61。co

(2)可见,字符集中的全部字符均可以用十六进制转义字符表示,能够在十六进制数字前面加上0x来表示十六进制转义字符。

(3)由上可知,使用八进制转义字符和十六进制转义字符,不只能够表示控制字符,并且也能够表示可显示字符。

但因为不一样的计算机系统上采用的字符集可能不一样,所以,为了能使所编写的程序能够方便地移植到其余的计算机系统上运行,程序中应少用这种形式的转义字符。

四、转义字符的使用

void main()
{
int a,b,c;
a=5; b=6; c=7;
printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
}

调用printf显示程序运行结果:

5
67
56     7

程序在第一列输出a值5以后就是“\n”,故回车换行;接着又是“\t”,因而跳到下一制表位置(设制表位置间隔为8),再输出b值6和c 值7;后又是"\n",所以再回车换行;以后又输出a值5和b值6;再次后"\t"跳到下一制表位置(与上一行的6 对齐),但下一转义字符“\b”又使退回一格,故紧挨着6再输出c值7。

五、注意事项

使用转义字符时须要注意如下问题:

(1)转义字符中只能使用小写字母,每一个转义字符只能看做一个字符。

(2)\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操做。

(3)在C程序中,使用不可打印字符时,一般用转义字符表示。

(4)转义字符’\0’表示空字符NULL,它的值是0。而字符'0'的ASCII码值是48。所以,空字符’\0’不是字符0。另外,空字符不等于空格字符,空格字符的ASCII码值为32而不是0。编程序时,读者应当区别清楚。

(5) 若是反斜线以后的字符和它不构成转义字符,则’\’不起转义做用将被忽略

例如:

printf(“a\Nbc\nDEF\n”);

输出:

aNbc
DEF

(6)转义字符也能够出如今字符串中,但只做为一个字符看待

例如:

#求下面字符串的长度
“\026[12,m” //长度为6,这里\026表示一个八进制字符
“\0mn”      //长度为0,注意这里不是2,
            //\0"是字符串的结尾,这个字符串其实只有"\0",后面的mn不是字符串的内容,这其实就是个空字符串,只有"\0"占了一个字节的位置,因此长度为1
相关文章
相关标签/搜索