记录C语言学习之转义字符

一、解释转义字符

通俗点来说,转义字符就是在字符前面加一个\从而改变该字符本来的意思。

例如,若需要打印出来abcndef,将会写出一组代码printf("abcndef")。但是如果写出来的代码是printf("abc\ndef"),则\n就组成了一组转义字符,改变了原本n的意思,使\n变成了具有换行意思的转义字符,则打印出来的结果为

abc

def

二、C语言中规定的常见转义字符

 1.\?(在书写连续多个问号时使用,防止它们被解析成三字母词)

在早期C语言当中,??)将会被解析成],??(将会被解析成[。即若想打印(hello??),输入printf("%s\n", "(hello??)"),则会打印出来(hello]。这就是三字母词。

如何解决呢?在两个问号前面加上一个\,使问号就变成单纯的问号,不受三字母词的影响,即输入printf("%s\n", "(hello\?\?)"),打印结果即为(hello??)。

2.\'(用于表示字符常量')

若想打印',输入printf("%c\n", '''),则会报错,前面两个''自动配对并且里面没有字符内容。所以要转变'的意思,应输入printf("%c\n", '\''),将'变成单纯的'并固定,就可以打印出'

3.\"(用于表示字符常量")

同理,若想打印",输入printf("%c\n", """),则会报错,前面两个''"自动配对并且里面没有字符内容。所以要转变"的意思,应输入printf("%c\n", "\''"),将'变成单纯的"并固定,就可以打印出"。

4.\\(用于表示一个反斜杠,防止它被解析成一个转义字符)

例如,printf("abcd\0ef")会打印出abcd,因为\0被解析成了一个具有字符串结束标志的转义字符,改变了0原本的意思。若要完整打印abcd\0ef,应输入printf("abcd\\0ef"),使\单纯的是\。

5.\a(alarm,警告字符,使电脑发生蜂鸣)

若输入pirntf("\a"),则打印出空白并引发电脑蜂鸣。

6.\b(退格符,光标回避字符但不删掉字符)

例如输入printf("abc\bdef"),则打印出abdef。计算机解析到c后解析到\b,光标往后退到c,继续解析的def则在c的位置基础上被解析。

7.\f(进纸符,换页符)

8.\n(换行符,前面举例已有介绍)

9.\r(回车,光标转到同一行的开头,而换行是光标转到下一行的开头)

10.\t(水平制表符)

相当于按住一个table键的效果,即空一大格,这一大格的宽度是4或者8的倍数的字节宽度,在vs2022的环境下,一个\t为8个字符,是指\t刚好对齐第八个字符上。

11.\v(垂直制表符)

12.\ddd(字符的八进制表示形式)

ddd表示1到3个八进制数,例如输入printf("%c\n","\130"),则会打印出X。

如何解释?首先将该八进制数转换为十进制,即1✖8²+3✖8+0×1=88,然后在ASCII表上找到对应所表示的字符X,即\ddd的意思就是把八进制的ddd转换为十进制过后,以这个数字作为ASCII码值,以字符形式打印出来的结果就是这个ASCII码值所对应的字符。

13.\xdd(字符的十六进制表示形式)

同理\ddd。但前提是不要超过ASCII值的范围。

注意事项

1.""里面输入的可以是字符,也可以是字符串,但''里面只能输入字符

2.printf("abc")=printf("%s\n", "abc"),但是这种形式只能适用于字符串,整型不可以。

3.小总结打印类型(想要用计算机最终打印出来的类型):%d打印整型类型,%c打印字符类型,%s打印字符或者字符串类型,%f打印float类型的数据,%lf打印double类型的数据,%zu打印sizeof的返回值。

4.abcdef@#等如何以二进制的形式进行存储?给他们进行编号,a为97,b为98等,这就为ACSII编码。特殊记忆,a为97,A为65,差32,b为98,B为66,差32,0为48,其他依次增加。

5.转义字符也是字符,而且是一个字符,\t是一个字符,但是效果为几个字符的长度,并且注意\ddd类型为八进制,只会有01234567出现,不会有8,\xdd类型为十六进制,只会有0123456789ABCDEF出现,不会有G。

6.printf("%d\n",strlen("c:\test\638\test.c"))打印结果为14。

欢迎各位补充与指正。

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值