C摘要之转义字符

1.转义字符

1.1常见的转义字符

转义字符释义
\?在书写连续多个问号时使用,防止被解析为三字母词
\'用于表示字符常量
\''用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转移序列符
\a警告字符,蜂鸣
\b退格符,作用是将光标向前推进一格
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。如:\130
\xdddd表示2个十六进制数字。如:\x30

1.1.1.  \?

        当我们连续书写多个?时,我们需要用到\?,防止其被解析为一个三字母词。什么是三字母词?三字母词英文名称为trigraph,在早年艰苦的时候,有很多字符是不存在的,所以常常会使用三字母词来代替,如用??=来代替#,??<>??来代替{},所以就有了连续多次使用?的场景,那么问题来了,假如我们就仅仅需要一个问号呢?如何才能避免被解析成一个三字母词呢?于是便有了\?这么个转移字符。

1.1.2.\'

        在解释这个字符串之前,我们首先来解决一个问题:如何在屏幕上打印一个字符常量" ' "?

printf("%c",''');//这样?

printf("%c",'\'')//还是这样?

 我们在VS2022环境下编译 ,很显然,第一种写法并不可取,因为已经报错了。而我们这时也可以理解\'的用法了。

1.1.3.\''

        \''用于表示一个字符串内部的双引号,类似于\'

 显而易见的,单独的"在字符串中会发生报错。这时便需要\"了。

1.1.4.\\

        用于表示一个反斜杠,防止它被解释为一个转移序列符。假如我们要打在屏幕上打印一个下载路径,D:\BaiduNetdiskDownload\Genshin Impact Game

 

如果直接打印,我们会得到这么一串字母?感觉有点不对劲,是不是少了点什么?emmm,没错,是\,对比可知,打印出来的路径没有一个\,那怎样才能打印出来呢?我们只需在每一个\前再加一个\,就可以了。如图

1.1.5.\a

         \a的用法很简单,就只是电脑发出一声蜂鸣。

感兴趣的读者可以试着输入这段代码,运行后你就可以听到蜂鸣啦!、

1.1.6.\b

        \b是退格符 ,作用是将光标向前推进一格。我们还是来举例子吧。

 1.1.7.\f

        \f,进纸符。。。目前来看,这个转义字符已经很少使用了,所以这里就不多赘述了。≡ω≡

1.1.8.\n

printf("\n");//简单地运行这段代码,就可以实现代码的换行啦

这个转义字符相信各位都已经很熟悉了,就不做赘述了。

1.1.9.\r

        回车,乍一想,回车似乎就是换行的意思?其实并不是这样。我们比较一下下面这两段代码

 

printf("asdfg\r");
printf("qwert");
printf("asdfg\n");
printf("qwert");

区别在哪?

 

 注意到了吗?\r是来到当前行的首个字符处,如果继续输入,则会将当前位置的字符覆盖掉,而\n则是来到下一行的首个字符处。

1.1.10.\t

        水平制表符其实就是我们键盘上的Tab键,一般相当于8个空格的位置。

1.1.11.\v

        垂直制表符在一般情况下并不常用,它的作用是让‘\v’后面的字符从下一行开始输出,且开始的列数为“\v”前一个字符所在列后面一列。

        这是网传的解释,只是现在似乎出了点问题?我还没彻底弄清楚原因。这个以后再讲。

1.1.12\ddd

        ddd表示1~3个八进制的数字。如:\130,这个应该并不难理解。不过要注意一点,因为是八进制,所以这些数字最大为7.

1.1.13\xdd

        同理,因为是16进制,所以最大数是F。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值