C语言,转义字符'\101'为什么为字符A。8进制不是0开头吗??

如题所述

因为在转义字符中有相关的规定,规定在转义字符之中,规定用 \xxx表示3为八进制(xxx代表的是三位八进制数),如\101,\102这样形式的,如果用打印出来的话,他们分别会被转义为大写的A、B。

所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。

一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。因此转义字符开头的字符序列被叫做转义序列。

扩展资料:

转义字符的作用:

定义转义字符串的原因有两个:

1、像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当做文本中的符号来使用。为了在HTML文档中使用这些符号,就需要定义它的转义字符串。当解释程序遇到这类字符串时就把它解释为真实的字符。在输入转义字符串时,要严格遵守字母大小写的规则。

2、有些字符在ASCII字符集中没有定义,因此需要使用转义字符串来表示。

拥有转义字符的原因基本上是两点:

1、使用转义字符来表示字符集中定义的字符,比如ASCll里面的控制字符及回车换行等字符,这些字符都没有现成的文字代号。所以只能用转义字符来表示 。

2、某一些特定的字符在编辑语言中被定义为特殊用途的字符。这些字符由于被定义为特殊用途,它们失去了原有的意义。

另外出于网站的安全。在数据写入数据库前,都会使用转义字符(函数)对一些敏感字符进行转义。这样做可以避免一些别有用心的人利用特殊符号的注入攻击。

参考资料来源:百度百科-转义字符

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-10
转义字符中,规定用 \ooo表示3为八进制(ooo代表三位八进制的数),即\101,\102这样形式的,如果用打印出来的话,就会分别被转义为大写的A、B。
而十六进制的转义字符规定为\xhh,注意这里的十六进制数字只有两位,即\x表示采用16进制,而后面两位hh代表16进制的数,比如\x41,\x42,转义后也表示A、B。
如果要表示数值的话,比如10进制数值65,用八进制表示就是0o101,用16进制表示就是0x42,就是说从数值上来讲 0o101 = 0x42 = 65,而ASCII码表的65代表的是A,所以,你添加转义符后,\101 和\x42都表示A
第2个回答  推荐于2017-11-26
在转义字符中,八进制前面的0是可以省略的,即'\101'等价于'\0101'.
但是十六进制前面的x就不可省咯。追问

16进制不是0x吗?

追答

例如这样就好‘\x12',
不用加0的
----------------------------分割-----------
上面说错了,'\101'等价于'\0101'.但是八进制后之跟1~3位八进制数字,所以如果用输出语句会出错
printf("\0101");这样输出只有1.因为计算机只认它的前三位010。 而1就原样输出。。

本回答被提问者采纳
第3个回答  2019-08-08
不用区分,不用转义字符的是十进制,用‘\xhh’的就是十六进制,用 \加数字且数字的任意一位都不超过8的就是8进制例如:‘\101’‘\010’‘\000’是合法8进制,如上‘\080’‘\12f’等就是非法的,不是八进制。
相似回答