文章目录

一、接续符的意义

二、接续符的使用

三、转义符的意义

四、转义符的使用

五、转义符和其他的语法混合

六、小结


一、接续符的意义

  • C语言中的接续符(\)是指示编译器行为的利器

下面看一段接续符的代码(代码1-1):

#in\
clud\
e <st\
dio.h>in\
t m\
ain(\
)
{
pri\
ntf\(\"Hello AutumnZe.\n")\;ret\
urn 0;
}

可以看到上述代码写的很凌乱,但是可以正常编译运行,如下:

二、接续符的使用

  • 编译器会将反斜杠剔除,跟在反斜杠后面的字符自动接续到前一行
  • 在接续单词时,反斜杠之后不能有空格,反斜杠的下一行之前也不能有空格
  • 接续符适合在定义宏代码块时使用

所以说代码1-1可以写成:

#include <stdio.h>int main()
{
printf    (    "Hello AutumnZe.\n")    ;return 0;
}

下面看一个接续符的应用程序:

#include<stdio.h>#define SWAP(a,b)       \
{                       \int temp = a;   \a = b;          \b = temp;       \
}int main()
{int a = 1;int b = 2;int c = 3;SWAP(a,b);printf("a = %d, b = %d\n", a, b);SWAP(b,c);printf("b = %d, c = %d\n", b, c);return 0;
}

可以看到,通过接续符来进行宏定义,代码看起来非常优美。下面为输出结果:

三、转义符的意义

  • C语言中的转义符(\)主要用于表示无回显字符,也可用于表示常规字符
\n 回车换行
\t 横向跳到下—制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜杠符"\"
\' 单引号符
\a 鸣铃
\ddd 1~3位八进制数所代表的字符
\xhh 1~2位十六进制数所代表的字符

四、转义符的使用

  • 当反斜杠(\)作为转义符使用时必须出现在单引号或者双引号之间

如下:

下面看一段转义字符的使用示例:

#include <stdio.h>int main()
{char enter = '\n';char* p = "\141\t\x62";printf("%s", p);printf("%c", enter);return 0;
}

141 的十进制表示为 97, 0x62 的十进制表示为 98,所以打印出来的结果如下:

五、转义符和其他的语法混合

  • 奖项:Best of Show
  • 功能:处理三种文件格式(PGM、PPM和ASCII Art)的降采样工具,降低文件分辨率
  • 作者:Google 华裔工程师 Don Hsi-Yun Yang

下面是源码,看起来像一个小女孩的脸:

                                       /*++++[         >i>n[t*/   #include<stdio.h>/*2w0,1m2,]_<n+a m+o>r>i>=>(['0n1'0)1;*/int/**/main(int/**/n,char**m){FILE*p,*q;int        A,k,a,r,i/*#uinndcelfu_dset<rsitcdti_oa.nhs>i/_*/;char*d="P%"   "d\n%d\40%d"/**/"\n%d\n\00wb+",b[1024],y[]="yuriyurarararayuruyuri*daijiken**akkari~n**""/y*u*k/riin<ty(uyr)g,aur,arr[a1r2a82*y2*/u*r{uyu}riOcyurhiyua**rrar+*arayra*=""yuruyurwiyuriyurara'rariayuruyuriyuriyu>rarararayuruy9uriyu3riyurar_aBrMaPrOaWy^?""*]/f]`;hvroai<dp/f*i*s/<ii(f)a{tpguat<cahfaurh(+uf)a;f}vivn+tf/g*`*w/jmaa+i`ni("/***/"i+k[>+b+i>++b++>l[rb";int/**/u;for(i=0;i<101;i++)y[i*2]^="~hktrvg~dmG*eoa+%squ#l2"":(wn\"1l))v?wM353{/Y;lgcGp`vedllwudvOK`cct~[|ju {stkjalor(stwvne\"gt\"yogYURUYURI"[i]^y[i*2+1]^4;/*!*/p=(n>1&&(m[1][0]-'-'||m[1][1]  !='\0'))?fopen(m[1],y+298):stdin;/*y/riynrt~(^w^)],]c+h+a+r+*+*[n>)+{>f+o<r<(-m]    =<2<5<64;}-]-(m+;yry[rm*])/[**/q=(n<3||!(m[2][0]-'-'||m[2][1]))?stdout /*]{     }[*/:fopen(m[2],d+14);if(!p||/*"]<<*-]>y++>u>>+r >+u+++y>--u---r>++i+++"  <)<      ;[>-m-.>a-.-i.++n.>[(w)*/!q/**/)return+printf("Can "  "not\x20open\40%s\40"    ""       "for\40%sing\n",m[!p?1:2],!p?/*o=82]5<<+(+3+1+&.(+  m  +-+1.)<)<|<|.6>4>-+(>    m-        &-1.9-2-)-|-|.28>-w-?-m.:>([28+*/"read":"writ");for  (   a=k=u= 0;y[u];  u=2    +u){y[k++   ]=y[u];}if((a=fread(b,1,1024/*
,mY/R*Y"R*/,p/*U*/)/*          R*/ )>/*U{  */   2&& b/*Y*/[0]/*U*/=='P' &&4==/*"y*r/y)r\}
*/sscanf(b,d,&k,& A,&           i,  &r)&&        !   (k-6&&k -5)&&r==255){u=A;if(n>3){/*
]&<1<6<?<m.-+1>3> +:+ .1>3+++     .   -m-)      -;.u+=++.1<0< <; f<o<r<(.;<([m(=)/8*/
u++;i++;}fprintf   (q,    d,k,           u      >>1,i>>1,r);u  = k-5?8:4;k=3;}else/*]>*/{(u)=/*{   p> >u  >t>-]s                >++(.yryr*/+(    n+14>17)?8/4:8*5/4;}for(r=i=0  ;  ;){u*=6;u+=                (n>3?1:0);if    (y[u]&01)fputc(/*<g-e<t.c>h.a r  -(-).)8+<1.                 >;+i.(<)<     <)+{+i.f>([180*/1*(r),q);if(y[u   ]&16)k=A;if                               (y[u]&2)k--;if(i/*("^w^NAMORI; {   I*/==a/*"                               )*/){/**/i=a=(u)*11&255;if(1&&0>=     (a=                                 fread(b,1,1024,p))&&")]i>(w)-;} {                                         /i-f-(-m--M1-0.)<{"[ 8]==59/* */                                       )break;i=0;}r=b[i++];u+=(/**>>                                     *..</<<<)<[[;]**/+8&*(y+u))?(10-              r?4:2):(y[u]         &4)?(k?2:4):2;u=y[u/*49;7i\(w)/;}             y}ru\=*ri[        ,mc]o;n}trientuu ren (*/]-(int)'`';}             fclose(          p);k= +fclose( q);/*] <*.na/m*o{ri{                       d;^w^;}  }^_^}}"   */   return  k-                -1+   /*\'   '-`*/(   -/*}/   */0x01        );       {;{    }};           /*^w^*/        ;}

下面为输出结果:

六、小结

  • C语言中的反斜杠 (\) 同时具有接续符和转义符的作用

    • 作为接续符使用时可直接出现在程序中
    • 作为转义符使用时需出现在单引号或双引号之间

【C语言进阶剖析】13.C语言中的接续符和转义符相关推荐

  1. C语言进阶剖析 13 接续符和转义符

    接续符的意义 C 语言中的接续符 ->是指示编译器行为的利器 实例分析: 初探接续符 #in\ clud\ e <st\ dio.h>in\ t m\ ain(\ ) {pri\ n ...

  2. 《C语言进阶剖析》1.C语言开发环境搭建与入门

    一.<第12课 - 注释符号> 本课程总结自狄泰软件学院唐佐林老师的<C语言进阶剖析>课程,本课程实用性较强,在此推荐给想深入学习C语言的同学! 1. 下面的注释正确吗? 在现 ...

  3. c语言深度剖析 视频,[C语言] C语言高手班 深度剖析视频教程 两期完整版

    资源介绍 C语言高手班 深度剖析视频教程 推荐具有比较好的C语言基础的朋友再来进行学习,不是说初学者一定学不了 但是在编程开发这类教程上面,还是一定要踏踏实实的才行! 视频目录及截图: xa0xa0第 ...

  4. C语言——深度剖析数据在内存中的存储

    大家好!我是保护小周ღ,本期为大家带来的是深度剖析数据在内存中的存储,不知道,大家学了这么久C语言,有没有想过一个问题,我们在程序设计中的数据是怎么在计算机中存储的?我们都知道 一个整型数据 int ...

  5. C语言—深度剖析数据在内存中的存储

    深度剖析数据在内存中的存储 数据类型介绍 类型的基本归类 整形在内存中的存储 大小端介绍 整形在内存中的存储的相关练习 浮点型在内存中的存储 浮点型在内存中的存储相关介绍 数据类型介绍 内置类型(C语 ...

  6. 【Go语言实战】13. Go语言context标准库(下)

    13. Go语言context标准库(下) 1. API函数 2. 辅助函数 3. context的用法 4. 使用context传递数据真的那么好吗? 参考资料 接着上一届,我们继续学习Go语言的C ...

  7. 常用HTML转义字符,html转义符,JavaScript转义符,html转义字符表,HTML语言特殊字符对照表(ISO Latin-1字符集)...

    HTML字符实体(Character Entities),转义字符串(Escape Sequence) 为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,> ...

  8. 【C语言进阶剖析】14.C语言中的单引号和双引号

    文章目录 一.单引号和双引号 二.小贴士 三.程序实例分析1 四.程序实例分析2 五.容易混淆的代码 六.小结 一.单引号和双引号 C语言中的单引号用来表示字符字面量 C语言中的双引号用来表示字符串字 ...

  9. C语言 深度剖析数据在内存中的存储(2)

    本次博客是继上次博客,继续向下剖析数据在内存当中的存储. 练习 浮点型在内存中的存储 练习 代码1: int main() {char a= -1;signed char b=-1;unsigned ...

最新文章

  1. 提气!清华成立集成电路学院,专研“卡脖子”技术
  2. vue路由history模式,nginx配置
  3. JVM1.6 GC详解
  4. 帮助方老师使用固态硬盘安装win10,赚了150软妹币(但是他赖账了!)
  5. 《软件工程》实验报告——软件设计
  6. 用于matplotlib对齐很有用的算法,可用于面试笔试
  7. vba 保存word里面的图片_笔记7 【office精华课】一套课程学会Word+Excel+PPT(一)【Word】(2020年第37周 周五)...
  8. 如何用MobaXterm查看日志信息以及xml
  9. VirtualBox基础使用
  10. linux 内核udp编程,Linux下网络编程实现UDP,还有大量实例
  11. 管理之道(七) - 不可奖励员工错误的行为
  12. Android_获取屏幕大小的两种方法
  13. SAP Open SQL
  14. 诀窍|Callnovo助中国电动自行车成为大洋彼岸街头美丽风景线
  15. DHCP server和DHCP relay配置
  16. 最炫表白网站html5源码_七夕程序员的十款表白源码_html+css+js
  17. voc旋转标注数据转dota类型
  18. 苹果退款_苹果退款流程最新苹果内购退款流程和教程
  19. Unity关于程序集(Assembly )的那些事
  20. 众里寻她千百度,那人却在优衣库。

热门文章

  1. Unity模型导入自动导入材质贴图
  2. KOF系列全人物第一时间不可防御技研究报告汇总引索贴
  3. 全网最详细解法----leetCode-17--电话号码的字母组合,Java入门你值得拥有
  4. |sex[]_sum[],G_ans|L2-028 秀恩爱分得快
  5. 苏格拉底与商鞅的生死异同
  6. Vmware ESX 5.0 安装与部署
  7. wordpress建站(空间+域名+备案)
  8. 求QQ自动登录解决方案
  9. CSS 用浮动制作一个导航栏
  10. Nature:Adversarial explanations for understanding image classification decisions and improved