转义字符中的数都是八进制的。
编译器语言c存储在以前学习C语言的过程中,只是对ASCII码和转义字符有一个简单的了解,最近遇到一些关于这方面的问题,深入研究了一下,总结下来,作为以后学习参考。
ASCII字符集
计算机用数字码来存储字符。ASCII码(美国标准信息交换码)是最常用的编码。
ASCII码表:http://imgsrc.baidu.com/baike/pic/item/f6428f8f7c5d36e9503d9262.jpg
转义字符
转义序列必须用但括号括起来
在ASCII码中有些字符是打印不出来的,如一些动作字符,这些字符叫做“非打印字符”,C语言为非打印字符提供了另外一种表示方式。
非打印字符只是ASCII的一个子集
转义字符 对应ASCII码十进制
/a 响铃(BEL) 007
/b 退格(BS) 008
/f 换页(FF) 012
/n 换行(LF) 010
/r 回车(CR) 013
/t 水平制表(HT) 009
/v 垂直制表(VT) 011
// 反斜杠 092
/? 问号字符 063
/' 单引号字符 039
/" 双引号字符 034
所有的ASCII码都可以通过转义方式表示出来
char test='A'; (编译器将其转换为相应十进制编码值,即65)
char test='/101';(对应的是A的八进制表示方式,需要注意的是:/ 后最多只能是三位,若写成'/0101 则出错,但是若编码为/007,则可以写成/07或者是/7')
char test='/0x41';(对应的是A的十六进制表示方式)
不使用转义方式表示
char test=65;
char test=0101; (注:其中前面的0表示为八进制表示,若没有0,表示的是e)
char test=0x41;
对于转义字符,除了上面的两种表示方式以外,还有第三种表示方式,假设蜂鸣字符
ASCII码值:char beep=7(或者用八进制或者十六进制表示);
C中提供的特殊的符号序列:char beep='/a'(或者转义的八进制和十六进制表示)
转义的方式表示:char beep=‘/007'
转义字符的另外用法:引用特殊的字符常量,如引用/ 、'、 ",写成//、/'、和/"
需要注意的几个方面:
无论是普通字符还是转义序列,如果作为双引号中字符集合的一部分,则无需引号 如:printf("Hello!7/n"),打印Hello!7
什么时候使用ASCII码,什么时候使用转义序列呢?如果要在某个转义序列和其对应的ASCII码之间做出选择,则应当使用转义序列。比如选择'/f'而不是'/014'。首先,转义字符更容易记忆;其次,这样做使程序的可移植性更好。因为在不使用ASCII码的系统中,'/f'仍然适用
当需要数值编码时,为什么使用'/032'而不是032?首先,'/032'更能清晰地表达程序员表示一个字符编码的意图;其次,'/032'这样的转义序列可以嵌入到C字符串中,而032不可以,例如:"Hello!/007/n"中就嵌入了'/007'
使用ASCII时要注意数字和数字字符的区别。例如字符4的ASCII码值为52.写法'4'表示符号4而不是数值4。