前言:
C语言中有许多的转义字符,它们在不同的语句中发挥着不同的作用,下面让我们了解一下常用的转义字符。
\?转义字符:
在一些相对较老的编译器中,可能会存在这个转义字符,目前较新的编译器大多都不支持这个转义字符。该字符主要用于防止连续书写多个问号时,误解析为三字母词。
示例代码:
printf("(Are you ok ??)\n");
旧的编译器运行结果是:
(Are you ok]
因为ok的后面“??)”会被误解析为]。从而输出(Are you ok],如果我们想得到输出结果为(Are you ok ??),可以将代码改成:
printf("(Are you ok \?\?)\n");
\’和\”转义字符:
在C语言中,单引号和双引号都是成对出现的,单独存在是不合适的,如果我们想要在一对单引号中使用一个单引号、或者在一对双引号中使用一个双引号,就必须使用到转义字符\’和\”。
错误示例:
由此可见,当我们在一对单引号中输入一个单引号,或者在一对双引号中输入一个双引号,编译器会报错,并要求我们补齐另一个引号。
不过需要注意的是:在一对单引号里可以使用一个双引号,在一对双引号里可以使用一个单引号。
示例代码:
printf("%c\n", 'a');
printf("%c\n", '\'');
printf("%s\n", "\"abcd");
printf("%c\n", '"');
printf("%s\n", "'");
运行结果:
\\表示一个反斜杠,用于防止将它解析为一个转义字符:
如果我们想要在屏幕上输出C:\test\test.c,用这句代码并不能得到想要的结果,而是得到C: est est.c。这主要是因为在C语言中,当\与t相遇时,就不再是\t的意思了,而变成转义字符\t,表示水平制表符。这时候,我们就需要使用\\转义字符,将\t这个转义字符变成普通字符。
示例代码:
printf("%s\n", "C:\\test\\test.c");
\a转义字符用于警示:
当计算机运行含有\a的代码时,会发出蜂鸣声。
示例代码:
printf("\a");
\ddd 和\xdd 分别用于表示八进制和十六进制的数字:
示例代码:
printf("%d\n", '\110');
printf("%c\n", '\110');
printf("%d\n",'\x24');
printf("%c\n",'\x24');
运行结果:
代码分析:
第一行代码:将八进制数110转换为十进制数72(8*1+64*1),并输出到屏幕。
第二行代码:将八进制数110转换为十进制数72,并输出相应ASCII码值(H)。
第三行代码:将十六进制数24转换为十进制数36(4*1+16*2),并输出到屏幕。
第四行代码:将十六进制数24转换为十进制数36,并输出相应的ASCII码值($).
其它常见转义字符:
\b 退格符 \f 进纸符 \r 回车
\n 换行 \t 水平制表符 \v 垂直制表符
练习题:
求下列代码输出结果是:
#include <stdio.h>
#include <string.h>
int main()
{
printf("%d\n", strlen("C:\test\129\test.c"));
return 0;
}
答案:
14
解析:strlen库函数是用来计算字符串的长度。从左边往右边数,C为一个字符 :为一个字符 \t 为一个字符 est 为三个字符 因为八进制中没有9,所以\12为一个字符,9为一个字符 \t为一个字符 est 为三个字符 .为一个字符 c为一个字符 一共有14个字符。故输出结果是14。