C语言进阶—— 接续符和转义符13

时间:2023-03-09 16:50:39
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语言的反斜杠同时具有接续符和转移符的作用
  • 作为接续符使用的时候可直接出现在程序中
  • 作为转移符使用的时需出现在单引号或者双引号之间