符号的技巧
专题二:符号的技巧。包括以下章节:
- 注释符号
- 接续符和转义符
- 单引号和双引号
- 逻辑运算符使用分析
- 位运算符分析
- ++、–操作符使用分析
- 优先级和类型转换分析
接续符(\)的意义
- C语言中接续符(\)是指示编译器行为的利器
使用接续符后
#include<stdio.h>
#def\
ine MAX\
255
int main()
{
/\
/这是\
\
注释
i\
n\
t\
*\
p\
= \
NULL;
printf("%0X\n", (unsigned int)(long)p);
return 0;
}
编译打印,没有问题。
不使用接续符是这个样子的
#include<stdio.h>
#define MAX 255
int main()
{
//这是注释
int *p = NULL;
printf("%0X\n", p);
return 0;
}
接续符的使用
- 编译器会将反斜杠剔除,跟在反斜杠后面的字符自动到前一行
- 在接续单词时,反斜杠之后不能有空格,反斜杠的下一行之前也不能有空格(具体视情况而定,并非绝对。最好不要有空格。)
- 接续符适合在定义宏代码块时使用,更容易明白
实例分析1-2:宏代码块的定义
使用接续符的宏代码块
#include<stdio.h>
#define SWAP(a,b) \
{ \
int tmp = a; \
a = b; \
b = tmp; \
} \
int main()
{
int a = 1;
int b = 2;
SWAP(a,b);
printf("a=%d, b=%d\n", a, b);
return 0;
}
打印结果:
使用函数实现交换函数
#include<stdio.h>
#define SWAP(a,b) \
{ \
int tmp = a; \
a = b; \
b = tmp; \
} \
void swap(int a, int b)
{
int tmp = a;
a = b;
b = tmp;
}
int main()
{
int a = 1;
int b = 2;
//swap函数并不能实现值互换。
//有些时候宏定义不能用函数来实现。
swap(a,b);
printf("a=%d, b=%d\n", a, b);
SWAP(a,b);
printf("a=%d, b=%d\n", a, b);
return 0;
}
结果:
转义字符
c语言中转义符主要用于表示无回显字符,表示一个动作
| \n | 回车换行 |
| \t | (横向跳下一制表位置)tab制表符 |
| \v | 竖向跳格 |
| \b | 退格 |
| \r | 回车 |
| \f | 走纸换页 |
| \\ | 反斜杠符”\” |
| \’ | 单引号符”’” |
| \a | 鸣铃 |也可以表示常规字符
| \ddd | 1~3位八进制数所代表的字符 |
| \xhh | 1~2位十六进制所代表的字符 |
小结
- c语言中的反斜杠同时具有接续符和转义符的作用
- 当反斜杠出直接出现在程序中,作为接续符使用
- 当反斜杠出现在字符或字符串中,作为转义符使用