首页 > 其他分享 >基础_003_转义字符

基础_003_转义字符

时间:2023-04-04 19:34:44浏览次数:43  
标签:输出 字符 基础 helloworld 003 转义字符 printf hello

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

转义字符

功能或输出结果

\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”。

标签:输出,字符,基础,helloworld,003,转义字符,printf,hello
From: https://blog.51cto.com/teacherzhou/6169288

相关文章

  • Java基础(四)
    网络编程网络编程概述:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络编程操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统网络编程在网络通信协议下,实现网络互联的不同......
  • 深度学习基础-pytorch1
    DataSetDataLoaderTorchvision数据读取训练开始的第一步,首先就是数据读取。PyTorch为我们提供了一种十分方便的数据读取机制,即使用Dataset类与DataLoader类的组合,来得到数据迭代器。在训练或预测时,数据迭代器能够输出每一批次所需的数据,并且对数据进行相应的预处理与......
  • 学习笔记——Python基础
    字符串索引str='我是一名学生'print(str[0])#输出“我”print(str[-6])#输出“我”字符串切片:把数据对象的一部分拿出来str='我是一名学生'print(str[2:4])#输出“一名”print(str[-4:-2])#输出“一名”#获取字符串长度:len()str='我是一名学生'le......
  • Goalng:基础复习一遍过
    Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。  剖析Helloworld  新建文件main.go写入以下内容:packagemainimport"fmt"funcmain(){fmt.Println("HelloWorld!")}其中,packgemain 的作用是声明了mai......
  • 路由基础
    路由协议基础知识什么是路由?路由是指导IP报文发送的路径信息。路由表只存在于终端计算机、路由器和三层交换机中,二层交换机中不存在路由表。 IP路由过程 路由器关键功能检查数据包的目的地确定信息源发现可能的路由选择最佳路由验证和维护路由信息 路由表一条路......
  • g_main_loop 基础用法
    /*test.c*/intmain(intargc,charconst*argv[]){/*1.创建一个GMainLoop结构体对象,作为一个主事件循环*/GMainLoop*loop=g_main_loop_new(NULL,FALSE);/*2.添加超时事件源*/g_timeout_add(1000,count_down,NULL);g_timeout_add(80......
  • A0--集群基础环境
    文件下载: ansible_v2.9.9flink-1.16.0hadoop-3.1.3hive-3.1.3kafka_2.13-3.3.1python-3.8.10spark-3.2.1tools.tgzzookeeper-3.6.3  一、安装并配置ansible自动化工具 1)上传ansible安装文件并解压缩tar -zxvfansible_......
  • 图解 Promise 实现原理(一)—— 基础实现
    于vivo互联网技术微信公众号 作者:孔垂亮很多同学在学习Promise时,知其然却不知其所以然,对其中的用法理解不了。本系列文章由浅入深逐步实现Promise,并结合流程图、实例以及动画进行演示,达到深刻理解Promise用法的目的。本文适合对Promise的用法有所了解的人阅读,如果还不......
  • oracle-基础概念
    1.数据库启动流程thespfileorpfileisreadoracleinstanceisstartedthecontrofileisreadthedatabaseismountdatafilesandredologfileareopenedthedatabaseisavailableforuse2.tablesegmentextentblock之间的关系table:表segment:段extent:区bloc......
  • python基础六(函数基础及参数使用)
    一、函数定义1、什么是函数函数就相当于具备某一功能的工具函数的使用必须遵循一个原则:先定义后调用2、为何要用函数代码冗余,程序的组织结构不清晰,可读性差可维护性、扩展性差3、如何用函数#定义函数#定义的语法def函数名(参数1,参数2,........