目录
一、接续符的意义二、接续符的使用三、转义符的意义四、转义符的使用五、转义符和其他的语法混合六、小结一、接续符的意义
C语言中的接续符(\)是指示编译器行为的利器
下面看一段接续符的代码(代码1-1):
#in\
clud\
edio.h>
in\
t m\
ain(\
)
{
pri\
ntf\
(\
"Hello AutumnZe.\n"
)\
;
ret\
urn 0;
}
可以看到上述代码写的很凌乱,但是可以正常编译运行,如下:
二、接续符的使用
编译器会将反斜杠剔除,跟在反斜杠后面的字符自动接续到前一行在接续单词时,反斜杠之后不能有空格,反斜杠的下一行之前也不能有空格接续符适合在定义宏代码块时使用所以说代码1-1可以写成:
#includeint main() { printf ( "Hello AutumnZe.\n" ) ; return 0; }
下面看一个接续符的应用程序:
#include#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位十六进制数所代表的字符 |
四、转义符的使用
当反斜杠(\)作为转义符使用时必须出现在单引号或者双引号之间
如下:
下面看一段转义字符的使用示例:
#includeint 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
/*2w0,1m2,]_r>i>=>(["0n1"0)1;
*/int/**/main(int/**/n,char**m){FILE*p,*q;int A,k,a,r,i/*
#uinndcelfu_dseti/_*/;char*d="P%" "d\n%d\40%d"/**/
"\n%d\n\00wb+",b[1024],y[]="yuriyurarararayuruyuri*daijiken**akkari~n**"
"/y*u*k/riin"yuruyurwiyuriyurara"rariayuruyuriyuriyu>rarararayuruy9uriyu3riyurar_aBrMaPrOaWy^?"
"*]/f]`;hvroai*/"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*/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<63> +:+ .1>3+++ . -m-) -;.u+=++.1<0< <; f 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(/*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语言 详细讲解接续符和转义符的使用的文章就介绍到这了,更多相关C语言 接续符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
上一篇:关于Java 获取时间戳的方法
下一篇:Qt 事件处理机制的深入理解
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?