当前位置 : 主页 > 编程语言 > c语言 >

基础_003_转义字符

来源:互联网 收集:自由互联 发布时间:2023-09-07
转义字符必须以“\”开头,常用的转义字符见下表。 转义字符 功能或输出结果 \f 换页,将当前位置移到下页的开头 \v 垂直制表符 \a 响铃 \n 换行,将当前位置移到下一行的开头 \r 回

    转义字符必须以“\”开头,常用的转义字符见下表。

转义字符

功能或输出结果

\f

换页,将当前位置移到下页的开头

\v

垂直制表符

\a

响铃

\n

换行,将当前位置移到下一行的开头

\r

回车,将当前位置移到本行开头

\t

水平制表符,将当前位置移到下一个tab位置

\b

退格,将当前位置后退一个字符

\'

输出一个单撇号(')

\"

输出一个双撇号(")

\?

输出一个问号(?)

\\

输出一个反斜线(\)

\ddd

1~3位八进制数所代表的字符,d的值可以是0~7的任何数字

\xhh

1~2位十六进制数所代表的字符,h的值可以是0~f的任何数字

 

一、\f和\v和\a

    \f(换页)和\v(垂直制表符)对屏幕没有任何影响,只会影响打印机执行响应操作,故此处不再具体介绍。

    \a的响铃功能是让系统自带的蜂鸣器发出“叮”的一声,因目前计算机已经基本没有安装蜂鸣器,无法测试,故此处也不再具体介绍。

二、\n

    \n实现输出时换行的功能。可以参考以下例句具体理解。

    printf("hello");printf("world");    //显示一行,等价于printf("helloworld");

    printf("hello\nworld");     //显示两行,第一行“hello”,第二行“world”

    printf("\nhelloworld");     //显示两行,第一行空白行,第二行“helloworld”

    printf("helloworld\n");     //显示两行,第一行“helloworld”,第二行空白行

三、\r

    \r实现输出时光标从当前位置移到本行的开头。与\n的区别是\r不换行。可以参考以下例句具体理解。

    printf("hello\rworld!");               //hello被覆盖,显示“world!”

    printf("hello\rabc");                  //hel被覆盖,显示“abclo”

    printf("hello\rabc");printf("1234");    //hello被覆盖,显示“abc1234”

四、\t

    \t实现输出时光标从当前位置移动到下一个tab位置即下一个制表位。在C语言中默认情况下制表位表示8个字符宽度的位置。因此,\t表示将光标移动到第8、16、24、32等字符位置后进行输出。可以参考以下例句具体理解。

    printf("hello\tworld");            //显示“hello+3个空格+world”

    printf("abcd\tworld");             //显示“abcd+4个空格+world”

    printf("helloworld\tabcd");        //显示“helloworld+6个空格+abcd”

    printf("\thello\tworld");          //显示“8个空格+hello+3个空格+world”

五、\b

    \b实现输出时光标从当前位置移动到前一个字符位置,因此使用\b后继续输出时,可以造成删除前一个字符的假象。可以参考以下例句具体理解。

    printf("hello\bworld");     //“hello”→“hell”→“hellworld”

    printf("helloworld\b");     //光标从b字符后移到b字符,显示“helloworld”

    printf("helloworld\babc");  //“hellworld”→“hellworl”→“hellworlabc”

    printf("xyz\b\b123");      //“xyz”→“xy”→“x”→“x123”

    printf("xy\bz\b123");      //“xy”→“x”→“xz”→“x”→“x123”

六、\'和\"和\?和\\

    如果需要显示“c:\news”这样的字符串,当使用printf("c:\news");进行输出时,将产生歧义,因为系统不知道到底是要输出“c:\news”这个字符串,还是先输出“c:”,然后换行再输出“ews”。为了避免产生歧义这样的情况发生。C语言将“'”、“"”、“?”、“\”这四个字符的输出定义为转义字符的输出,即每次输出这几个字符时,前面还需要添加“\”。可以参考以下例句具体理解。

    printf("c:\\news");                    //显示“c:\news”

    printf("转义字符\'\\n\'表示换行");     //显示“转义字符'\n'表示换行”

七、\ddd和\xhh

    \ddd表示输出1~3位八进制数对应的ASCII码字符。\xhh表示输出1~2位十六进制数对应的ASCII码字符。可以参考以下例句具体理解。同时为了方便,以下用“□”表示空格。

    printf("\101 \141 \x41 \x61");          //显示“A□a□A□a”

    上例中“\101”与“\x41”为八进制下和十六进制下“A”对应的ASCII。“\141”与“\x61”为八进制下和十六进制下“a”对应的ASCII(具体转换可查ASCII码表或者学习进制转换规则)。

    printf("\408");        //显示“□8”

    上例中“\408”不是一个转义字符,因为8不是八进制数字,因此“\408”应该是转义字符“\40”和普通字符“8”。而“\40”是空格的八进制ASCII码,所以最后显示“□8”。

    printf("\1011 \5011");      //显示“A1□A1”

    上例中“\1011”不是一个转义字符,因为转义字符只能为1~3位数字,因此“\1011”应该是“\101”和普通字符“1”。而“\101”是A的八进制ASCII码,所以“\1011”最后显示“A1”。

    同理,“\5011”不是一个转义字符,应该是转义字符“\501”和普通字符“1”。但是如果将“\501”转换为二进制为“101 000 001”,而ASCII码只有8位,因此这里要将最左边的“1”视为溢出。故“\501”对应的转义字符也是“\101”。所以“\5011”最后也是显示“A1”。

【来源:国外高防服务器 http://www.558idc.com/stgf.html 欢迎留下您的宝贵建议】
上一篇:详解QT6.5在线下载—使用国内镜像
下一篇:没有了
网友评论