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语言 ...
随机推荐
- node.js 模块和其下载资源的镜像设置
以前安装 electron 时总是失败,然后就在淘宝镜像上下载好相应版本的文件放到用户目录来解决问题. 后来研究发现 npm 不仅可以设置 node.js 模块仓库的代理, 同样可以设置像 elect ...
- Could not find or load main class Hello
在 linux 下写了一个非常简单的 Hello World 程序,编译正常,运行报错:Error: Could not find or load main class Hello 这是由于 CLAS ...
- 超链接导致window.location.href失效的解决办法
通常我们采用 window.location.href 执行页面间的跳转,比如下面的语句 window.location.href = 'https://www.baidu.com/'; 一般执行上面 ...
- http头部如何对缓存的控制
文章自于我的个人博客 使用缓存的目的就是在于减少计算,IO,网络等时间,可以快速的返回,特别是流量比较大的时候,可以节约很多服务器带宽和压力. 一个请求从缓存的方面来说,有三个过程. 本地检查缓存是否 ...
- 【Angular JS】网站使用社会化评论插件,以及过程中碰到的坑
目前正在开发自己的网站,技术上使用Angular JS + Express JS + Mongo DB.由于网站会有文章发布,因此需要有评论功能.评论功能也可以自己开发,但由于现在社会化评论插件很多, ...
- Servlet是线程安全的吗?
Servlet不是线程安全的. 要解释为什么Servlet为什么不是线程安全的,需要了解Servlet容器(即Tomcat)使如何响应HTTP请求的. 当Tomcat接收到Client的HTTP请求时 ...
- Hadoop federation配置
Hadoop federation配置 1.介绍 hadoop federation也称为联邦,主要是对namenode进行扩容.HA模式下只是实现了hadoop namenode的高可用,但是随着文 ...
- SqlServer-Cursor讲解一
原创文章,转载必需注明出处:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/introduce-for-sqlserver-s-cu ...
- Python中的Numpy、SciPy、MatPlotLib安装与配置
Python安装完Numpy,SciPy和MatplotLib后,可以成为非常犀利的科研利器.网上关于这三个库的安装都写得非常不错,但是大部分人遇到的问题并不是如何安装,而是安装好后因为配置不当,在使 ...
- kinectV2平面检测
最近做一个关于kinect的东西,主要是在RGB图上提取指定的平面.对于kinect也是刚刚接触不是很熟悉,捣鼓了两天做了很粗糙的东西,但是也学到了一些东西,所以记录一下. 思路大概就是: 在RGB中 ...