C语言中的接续符(\)是指示编译器行为的利器。
编译器会在反斜杠(\)剔除,跟在反斜杠后面的字符自动接续到前一行;
在连接单词时,反斜杠之后不能有空格,反斜杠的下一行之前也不能有空格;(会报错)
backslash and newline separated by space // warning 在接续符后多加了一个空格
接续符适合在定义宏代码块时使用。
源代码:
#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;
}
将宏代码块通过接续符展开:
#define SWAP(a,b) \
{ \
int temp=a; \
a=b; \
b=temp; \//通过接续符可以一眼看出宏定义内容的含义
}
转义符
C语言中的转义符(\)主要用于表示无回显字符,也可用于表示常规字符 \n 回车换行
\t 横向跳转到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜杠符 “\”
\' 单引号符
\a 鸣铃
\ddd 1~3位八进制数所代表的字符
\xhh 1~2位十六进制数所代表的字符
观察下面代码,判断输出:
char enter = '\n';
char *p = "\141\t\x62"; //八进制的141,对于十进制97,小写字符a的ANSIC码
printf("%s", p);
printf("%c", enter); //无回显字符 直接换行
输出为:
delphi@delphi-vm:~/will$ ./a.out
a b
也就是说,转义字符可以出现在单引号和双引号之间,表示正常的含义。
#include <stdio.h>
int main()
{
char c = '\n';
char* s = "\n\n";
printf("%c\n", c);
printf("%s\n", s);
return 0;
}
小结:
C语言中的反斜杠(\)同时具有接续符和转义符的作用
作为接续符使用时可直接出现在程序中
作为转义符使用时需出现在单引号或双引号之间。