Bootstrap

C语言转义字符

前言:

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。

;