C语言进阶—— 接续符和转义符13
接续符的意义:
- C语言中的接续符 (\) 是指示编译器行为的利器
我们来看一个案例:
#in\
clud\
e <st\
dio.h> in\
t m\
ain(\
)
{
pri\
ntf\
(\
"Hello bupi\n"
)\
; ret\
urn ;
}
你一眼看过去可能会认为这个不像C语言的代码,但是他的确是的,只是大量使用了接续符,在现实中不用这样使用接续符,这只是一个例子。
有人或许会问,这样一段简单的程序使用接续符就变得这样的混乱,那我们还有必要去了解接续符吗?答案是要了解
改进前的代码:
#include <stdio.h> #define SWAP(a,b) { int temp = a; a = b; b = temp; } int main()
{
int a = ;
int b = ;
int c = ; SWAP(a,b); printf("a = %d, b = %d\n", a, b); SWAP(b,c); printf("b = %d, c = %d\n", b, c); return ;
}
第三行是一个宏代码块,就是交换两个变量值,但是代码这样挤在一行,可读性并不好。
使用接续符改进后:
#include <stdio.h> #define SWAP(a,b) \
{ \
int temp = a; \
a = b; \
b = temp; \
} int main()
{
int a = ;
int b = ;
int c = ; SWAP(a,b); printf("a = %d, b = %d\n", a, b); SWAP(b,c); printf("b = %d, c = %d\n", b, c); return ;
}
使用接续符改进后的宏代码块可读性大大增加了。
接续符的使用:
- 编译器会将反斜杠剔除,跟在反斜杠后面的字符自动接续到前一行
- 在接续单词时,反斜杠之后不能有空格,反斜杠的下一行也不能有空格
- 接续符适合在定义宏代码块时使用
转义符的意义:C语言的转义符 (\) 主要用于表示无回显示符,也可以表示常规字符
- \n 回车换行 (本义是光标往下一行)
- \t 横向跳到下一制表位
- \v 竖向跳格
- \b 退格
- \r 回车(本义是光标重新回到本行开头)
- \f 走纸换行
- \\ 反斜杠符 \
- \' 单引号符
- \a 鸣铃
- \ddd 一至三位八进制数代表的字符
- \xhh 一至两位十六进制数所代表的字符
转移符的使用:当反斜杠 (\) 作为转移符使用时必须出现在单引号或者双引号之间
案例:
#include <stdio.h> int main()
{
char enter = '\n'; char* p = "\141\t\x62"; printf("%s", p);
printf("%c", enter); return ;
}
小结:
- C语言的反斜杠同时具有接续符和转移符的作用
- 作为接续符使用的时候可直接出现在程序中
- 作为转移符使用的时需出现在单引号或者双引号之间
C语言进阶—— 接续符和转义符13的更多相关文章
- C语言学习笔记--接续符和转义符
1.C语言中的接续符 (1)编译器将反斜杠剔除,跟在反斜杠后面的字符自动接续到前一行 (2)在接续单词时,反斜杠之后不能有空格,反斜杠下一行之前也不能有空格 (3)接续符适合在宏定义代码块时使用 #i ...
- .NET 基础 一步步 一幕幕[运算符、占位符、转义符]
运算符.占位符.转义符 好吧,在五局全胜之后,终于升到了三个钻,距离一个星星还有一大段距离,忽然想起来今天的博客还没写,果断坑队友,来写博客了....感觉以后还是每天更新一篇比较好.要不晚上就该熬 ...
- 常用HTML转义字符,html转义符,JavaScript转义符,html转义字符表,HTML语言特殊字符对照表(ISO Latin-1字符集)
HTML字符实体(Character Entities),转义字符串(Escape Sequence) 为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,> ...
- 【转】常用html转义符,JavaScript转义符
HTML字符实体(Character Entities),转义字符串(Escape Sequence) 为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,> ...
- c#基础学习(0626)之占位符、转义符
占位符 使用方法:先挖个坑,再填个坑. 使用占位符需要注意的地方: 1.你挖了几个坑,就应该填几个坑,如果填多了,没效果,如果填少了,出现异常 异常是指:语法上没有任何错误,只不过再运行的期间,由于某 ...
- 常用html转义符,JavaScript转义符
HTML字符实体(Character Entities),转义字符串(Escape Sequence) 为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,> ...
- 初学C#之变量、占位符、转义符、还有就是类型转换
㈠.定义变量 先定义再赋值 int Num1; Num1 = ; 定义的同时赋值 ; 定义多个变量同时赋值,先决条件变量类型相同,例如: string phome = "1891250888 ...
- Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助
Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助 目录 Pychar ...
- 《C语言进阶剖析》课程目录
<C语言进阶剖析>学习笔记 本文总结自狄泰软件学院唐佐林老师的<C语言 ...
随机推荐
- 栅格那点儿事(二)---细看Raster属性
细看Raster属性 如果你已经看完了上一章,你已经了解了栅格数据是由一个个像元(Cell)按照行列方式构成的,每一个像元都有自己的像元值,并且这些像元值根据栅格类型的不同,可以代表反射值,或高程值, ...
- Win7安装软件,装到microsoft.vc90.crt时卡住的解决办法
在安装某些程序的时候,可能会出现下列提示:an error occured during the installation of assembly ‘microsoft.vc90.crt,versio ...
- 多路复用select poll epoll
I/O 多路复用之select.poll.epoll详解 select,poll,epoll都是IO多路复用的机制.I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般 ...
- Stuts2的 "struts.devMode" 设置成true后,不起作用,仍需要重启tomcat
不要用 <constant name="struts.devMode" value="true" />改成: <constant name=& ...
- To my dear friends in SFAE
To my dear friends in SFAE, 这不是farewell,我还在西门子大家庭.2018年1月份我会转到SLC MCBU.在SFAE十年,一些敢想,唠叨唠叨~ 十年弹指一挥间.记得 ...
- 如何启用SAP C4C OData Event Notification
当我们在试图使用SAP C4C OData事件通知这个功能时,如果遇到下列提示消息,说明这个功能在business configuration里没有开启: The OData Event Notifi ...
- python 网址
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034e ...
- vuejs父子组件的数据传递
在vue中,父组件往子组件传递参数都是通过属性的形式来传递的 <div id='root'> <counter :count = '1'></counter> &l ...
- 注解@Component,@Controller,@Service,@Repository简单了解
Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发.@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring B ...
- GPU和CPU耗时统计方法
GPU端耗时统计 cudaEvent_t start, stop; checkCudaErrors(cudaEventCreate(&start)); checkCudaErrors(cuda ...