C语言——转义字符

来源:互联网 发布:高三要有多努力 知乎 编辑:程序博客网 时间:2024/05/28 23:11


1、C语言中为什么需要转义字符?
        要知道为什么你首先需要知道一下几个知识点:
            1)所有的数据在内存中都是以二进制的形式进行存放的。
            2)在数据转换为二进制时是按照ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)进行编码的。当然像汉字这些的编码可能采用的是UTF-8或者其他的编码方式,但是这些编码方式的前128个字节的信息和ASCII编码完全吻合。
            3)这时,需要简单的关注一下ASCII表
                http://www.asciima.com/
                有没有发现一些比较不一样的地方?(以下来自百度百科,经过我的对比,发现百科没有胡说^_^)
                    0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。

                    32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
                    65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。

                    同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

                    后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号。
                   
             好了,到这块时,应该了解的知识已经基本都写出来了,现在说说为什么需要转义字符这个东西:
             举个例子:每个写C的人都大量用到的 \n,它表示的是换行,这个地球人都知道。在ASCII表中会看到换行的编码是十进制的10,也就是说,在C语言输出一个字符串后,你加上\012(八进制表示的10,此处不能用十进制,因为十进制没有转义)
                   
   
               本来用\012就可以来实现换行了,为什么还要有一个\n 呢?我推测:是美国那帮哥们在搞这个的时候,换行用的那么多,记一个\012又不太好记住,所以就搞出来了一个\n来代表换行。同理:用其他转义字符来代替对应的编码。毕竟记住几个字母比记住几个数字要简单一点,而且还少敲几下键盘。

2、转义字符的定义
            所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。    

3、都有哪些常见的转义字符
        \a        警告字符,响铃或者其他一些可听见或者看见的信号
        \b        退格
        \f         进纸字符
        \n        换行符
        \r         回车符
        \t         水平制表符
        \v        垂直制表符
        \ddd    ddd表示八进制数。这个转义符表示的字符就是给定的八进制数值所代表的字符。
        \?        在书写连续多个问号时使用,防止被解释为三字母词。(关于三字母词可以去看《C和指针》P22)
        \"        用于表示一个字符串内部的双引号
        \'        用于表示字符常量  '
        \\        用于表示一个反斜杠,防止解释为转义字符。
        \0       ASCII编码为0的值,也就是NUL,作为一个字符串结束的标志。       

        1,\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。 
        2,\n其实应该叫回车换行。换行只是换一行,不改变光标的横坐标;回车只是回到行首,不改变光标的纵坐标。 
        3,\t 光标向前移动四格或八格,可以在编译器里设置


0 0
原创粉丝点击