C语言学习篇—转义字符

浅谈转义字符

什么是转义字符:

  通俗来讲,转义字符就是加上\的字符和字符单独出现时所代表的意义不一样。

常用的转义字符

转义字符 作用
\? 防止出现3字母词
\’ 用于表示字符’
\“ 用于表示字符“
\\ 用于表示斜杠,一个斜杠时会被解释为转义序列
\a 警告字符,电脑会发出蜂鸣
\b 退格符,相当于删除一个字符
\n 换行符
\r 回车符
\t 水平制表符,与tab效果相当
\v 垂直制表符,与换行类似
\ddd 表示1~3个八进制数,如\130
\xdd 表示1~2个十六进制数,如\x1a

具体实例演示

转义字符\?

代码演示

#include

int main()
{
	printf("(Who are you??)\n");//这里的??)会被编译成]
	printf("(Who are you\?\?)\n");//使用\?便不会出现三字母词的现象
	return 0;
}

C语言学习篇—转义字符_第1张图片
只有在一些旧的编译器中才会出现三字母词,演示所用的VS不会出现这个问题。

转义字符\’

代码演示

#include
int main()
{
	printf("'"\n);//“”中间的’没有配对对象,无法编译
	printf("\'");//“”中间使用\’便可只打印出字符’
	return 0;
}

C语言学习篇—转义字符_第2张图片

转义字符\"

代码演示

#include
int main()
{
	printf(""");//“”中的”无法配对(缺少引号),所以无法编译
	printf("\"");//“”中使用转义字符\”便可只打印”
	return 0;
}

C语言学习篇—转义字符_第3张图片

转义字符\\

代码演示

#include
//文件路径的打印
int main()
{
	printf("C:\prorgamx86\test\n");//编译器会认为'\p'是一个转义字符(不存在这个转义字符),所以\不会打印出来
								   //编译器将'\t'按转义字符水平制表符处理,所以\和t都不会打印出来,而是会在此处有一个tab
	printf("C:\\prorgamx86\\test\n");//使用转义字符'\\'便会将\打印出来,也不会产生其他转义字符
	return 0;
}

C语言学习篇—转义字符_第4张图片

转义字符\a

代码演示

#include

int main()
{
	printf("蜂鸣声\a\a\a");//理论上有几个转义字符'\a',电脑就会蜂鸣几声
	return 0;
}

C语言学习篇—转义字符_第5张图片

转义字符\b

代码演示

#include

int main()
{
	printf("I love studying!\b!\b!\b");//有几个转义字符'\b'就会删除几个字符
	return 0;
}

C语言学习篇—转义字符_第6张图片
将后面的三个感叹号全部删除

转义字符\n

代码演示

#include

int main()
{
	printf("I come form shanghang!\n");
	printf("I \ncome \nform \nshanghang!\n");//遇到一个转义字符'\n'就会换行一次
	return 0;
}

C语言学习篇—转义字符_第7张图片

转义字符\r

代码演示

#include

int main()
{
	printf("my name is two-big-cat\n");
	printf("my name is \rtwo-big-cat\n");//转义字符'\r'相当于将光标放在该位置
	return 0;
}

C语言学习篇—转义字符_第8张图片

转义字符\t

代码演示

#include

int main()
{
	printf("aowu\taowu\n");
	printf("aowu    aowu\n");//转义字符'\t'相当于4个空格,也就是一个tab
	return 0;
}

C语言学习篇—转义字符_第9张图片

转义字符\v

代码演示

#include

int main()
{
	printf("miaomaiomiaomiao\n");
	printf("miao\vmaio\vmiao\vmiao\n");//其作用类似于换行
	return 0;
}

C语言学习篇—转义字符_第10张图片
VS编译器不支持水平制表符的打印,其实际效果相当于换行。

转义字符\ddd

代码演示

#include

int main()
{
	printf("\130");//转义字符'\130',130是八进制,转换为十进制对应的是88
				   //88在ASCII码表对应的字符是X
	return 0;
}

C语言学习篇—转义字符_第11张图片

注意:

1. 转换成十进制后不要超出127,否则编译可通过,但没有相对应的字符。

例如:

#include

int main()
{
	printf("\177");//十进制127转换为八进制后是177,此时便没有对应的ASCII码字符
				   //但是可以通过编译
	return 0;
}

C语言学习篇—转义字符_第12张图片
可以看到,此时运行结果什么都没有

2. 转义字符‘\ddd’中的数值大小不能超过7,若超过则这个数值就不会当作转义字符处理。

例如:

#include

int main()
{
	printf("\778");//此时转义字符只算'\77',对应的十进制数是63
				   //63对应的ASCII码表的字符是?
				   //打出的结果就是?8,这里的8没有被算做转义字符的数字,直接打印了出来
	return 0;
}

C语言学习篇—转义字符_第13张图片

点击可看到ASCII码表

转义字符\xdd

代码演示

#include

int main()
{
	printf("\x3a");//转义字符'\x3a'中的八进制3a转换为十进制是58
				   //58在ASCII码表中对应的字符是冒号(:)
	return 0;
}

C语言学习篇—转义字符_第14张图片

注意:

与‘\ddd’相同,转换后的十进制数不要大于127,否则没有对应的字符,但是也不可过大,过大后编译器会报错

例如:

#include

int main()
{
	printf("\x3a0");//十六进制3a0对应的十进制是928,此时就太大了会报错
	return 0;
}

C语言学习篇—转义字符_第15张图片
由于数字太大,编译器会直接报错。
点击可看到ASCII码表

总结

  所有的转义字符仍然属于字符,在打印时必须用字符或者字符串的方式表达,按照上诉本喵所说的那些规则,结合自己的实际情况来使用。最后,欢迎各位大佬指出错误和不足之处,本喵会继续改进。

你可能感兴趣的:(C语言学习,c语言)