ASCII码的一些个人理解

突然发现自己其实一直对ASICII码懵懵懂懂的,今天特意去百度了一下,算是弄清楚了一点吧!
在这里插入图片描述

规则:
简单的来说:putchar(数字) 打印 字符

再来看几个例子

/*putchar输出字符*
	printf("\n");
	putchar('h');//h就是一个字符,用单引号输出
	putchar('e');
	putchar('l');
	
	putchar(104);//h就是一个字符,对应整数是104 ASCII码
	putchar('\n');

	putchar('\101');//\ddd代表三位八进制,整数对应A的字符


下面是转义字符
1.asc码重点还是转义字符的问题

	putchar('\') 	//error

	a.c:5:10: warning: missing terminating ' character [enabled by default]
  putchar('\');
          ^
	a.c:5:2: error: missing terminating ' character
 	 putchar('\');

报错原因:找不到终止符号。
因为【 \‘】代表是 字符 【 ‘ 】 和 表示字符的单引号【 ‘ 】不是同一个东西,一个表示字符的单引号,一个是字符单引号(这里读起来有点绕,希望仔细理解)
所以编译器找不到字符的表示字符的终止符号【’】
正确确写法是

putchar('\\') //反斜杠
putchar('\''); // 单引号
  1. 八进制转义字符
    它是由反斜杠’‘和随后的1~3个八进制数字构成的字符序列。例如,’\60’、’\101’、’\141’分别表示字符’0’、‘A’和’a’。因为字符’0’、'A’和’a’的ASCII码的八进制值分别为60、101和141。( 注意这里 0,A,a 的十进制分别为 48 65 97,所以对应的八进制为 60,101,141),

    这里注意:使用转义八进制时需再转为十进制,再去asc表找对应的字符
    字符集中的所有字符都可以用八进制转义字符表示。
    如果你愿意,可以在八进制数字前面加上一个0来表示八进制转移字符。

  2. 十六进制转义字符

它是由反斜杠’‘和字母x(或X)及随后的1~2个十六进制数字构成的字符序列。例如,’\x30’、’\x41’、’\X61’分别表示字符’0’、‘A’和’a’。因为字符’0’、'A’和’a’的ASCII码的十六进制值分别为0x30、0x41和0x61。

可见,字符集中的所有字符都可以用十六进制转义字符表示。

----------------------------------------------------注意事项--------------------------------------------------
1)转义字符中只能使用小写字母,每个转义字符只能看作一个字符。
2)\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
3)在C程序中,使用不可打印字符时,通常用转义字符表示。
4)转义字符’\0’表示空字符NULL,它的值是0。而字符’0’的ASCII码值是48。因此,空字符’\0’不是字符0。另外,空字符不等于空格字符,空格字符的ASCII码值为32而不是0。编程序时,读者应当区别清楚。
5) 如果反斜线之后的字符和它不构成转义字符,则’\’不起转义作用将被忽略。
例如:
printf(“a\Nbc\nDEF\n”);
输出:
aNbc
DEF
6)转义字符也可以出现在字符串中,但只作为一个字符看待。
例 求下面字符串的长度
“\026[12,m” 长度为7
“\0mn” 长度为0。(想想:为什么不是2) // \0 代表字符串终止符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值