C语言:转义符含义及其展示(超清楚展示作用)

        转义字符:C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符。

        最近有看到一张转义字符表,但除了常用的几个,我对转义字符的效果并不了解,甚至对一些转义字符的功能还有所混淆,对表中的解释也是一知半解。所以接下来对表中的转义字符一一尝试:


\a        鸣铃        ASCII码值:7

示例代码:

#include <stdio.h>

int main(void)
{
	printf("\a");
	
	return 0;
}

结果:

        啥也没发生,并没有听到什么声音;据说是需要蜂鸣器,且现在的电脑主板大多是不带蜂鸣器了,所以没有效果。

        更多有关 "\a" 的理解可以参考 这里


\b        退格        ASCII码值:8

示例代码:

#include <stdio.h>

int main(void)
{
	printf("鸡\b你太美");
	printf("c\btrl");

	printf("\n");
	return 0;
}

结果:

        \b可以将当前位置退回一格,如图,有了这个转义字符我们就可以把“鸡你太美”的“鸡”消掉,把“ctrl”的“c”消掉,这样小黑子就黑不到我家哥哥了,但是这里要注意的是,退回一格指的是退回一个字符(但好像对转义字符无效),比如此处汉字占两个字节,字母占一个字节,所以“你”前面还有一个字符的空位,而t前面没有。


\f        换页符        ASCII码值:12

实例代码:

#include <stdio.h>

int main(void)
{
	printf("鸡你太美\f");
	printf("鸡你太美\f");
	printf("鸡你太美");

	return 0;
}

结果:

        通过编译器的结果可以猜测是跳到下一行的当前位置继续输出,并不是我们看到的“下一页的开头”。


\n        换行符        ASCII码值:10

        这个应该不用展示了吧,这个是最常用的,效果是换到下一行的行首。


\r        回车符        ASCII码值:13

实例代码:

#include <stdio.h>

int main(void)
{
	printf("鸡你\r太美");
	printf("\n");	//用于换行
	printf("1998年8月2日,\r蔡徐");
	printf("\n");
	return 0;
}

结果:

        由图,因为 \r 的作用(光标移到当前行首),之后输出的内容把前面的内容覆盖掉了,并不是将前面的内容推移向后;同样的,一个汉字字符覆盖两个英文(数字)字符。


\t        水平制表        ASCII码值:9

实例代码:

#include <stdio.h>

int main(void)
{
	printf("鸡你太\t美");
	printf("\n");	//用于换行
	printf("蔡徐\t坤出生于浙江温州。");
	printf("\n");
	return 0;
}

结果:

        \t的效果就像TAB键,进入下一个制表位,如左图,虽然插入\t的位置不同,但打印的时候其后的内容却从同一位置开始,适用于有打印格式的场景,如右图即是作者打印的九九乘法表。


\v        垂直制表        ASCII码值:11

示例代码:

#include <stdio.h>

int main(void)
{
	printf("鸡你太\v美");
	printf("\n");	//用于换行
	printf("蔡徐\v坤出生于浙江温州。");
	printf("\n");
	return 0;
}

结果:

        感觉和\f效果很像有没有,都是光标转移到下一行的当前位置。 没有找到什么清晰的解释,据说是在文件打印有特殊的效果(惭愧惭愧)


\'单引号 
\"   双引号
\\ 反斜杠

错误示范:

        这类字符有自己特殊的作用,如果想要打印出来,而你直接在字符串中使用,将会产生大量的报错,这是需要用到反斜杠“\”来提示计算机,后面的字符不是用在特殊作用上,而是想打印出来。

正确操作方法:

#include <stdio.h>

int main(void)
{
	printf("\'鸡你太美\'");
	printf("\n");		//用于换行
	printf("\"鸡你太美\"");
	printf("\n");
	printf("\\鸡你太美\\");
	printf("\n");
	return 0;
}

 结果:

         想要的结果出现了!!!


\?        问号

        关于这个转义字符我确实有个问号,因为问号不论带不带“\”,都可以正常输出“?”。对于这个问题,我找到一个大佬的博文,可以点击这里阅读,但我个人境界没到暂时不太理解(惭愧惭愧)


\0        空字符        ASCII码值:0

        '\0' 是字符串的结束的标志符,任何字符串之后都会自动加上'\0'。如果字符串末尾少了‘\0’字符,则其在输出时可能会出现乱码问题。‘\0’转义字符在ASCII表中并不表示阿拉伯数字0,阿拉伯数字0的ASCII码为48。

        因为空字符串也是字符串,所以空字符串中也带有且仅有一个'\0',所以也叫它空字符。


\ddd        \xhh

分别用八进制和十六进制输出字符,d -> 0~7        h -> 0~9a~f

ASCII码表(部分): 

示例代码:

#include <stdio.h>

int main(void)
{
	printf("\114");
	printf("\x4c");		
	printf("\n");	//用于换行

}

        查表,八进制0114,和十六进制0x4c代表的都是 "L" 字母。

输出结果正确!


         以上是我对转义字符的总结及一些个人理解,如有错漏,实属水平不够,欢迎指正和讨论!感激不尽!

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值