C语言的转义字符,八进制

简介: C语言的转义字符,八进制

前言

接下来跟大家分享一个转义字符八进制好玩的地方,可能这个地方困扰了我们很久,但是想明白后会觉得很有趣。

注意:'\xxx8xx'中8前面的数称为有效数字,8后面的数为无效数字。例如:'\111834'中的有效数字为3,无效数字为2。

1. 发现“怪兽”

      在上图的运行结果中,我们可以发现'\80'的转义字符的写法是错误的,但是编译器并没有报错且还能运行起来,这就很有趣了。'\0'或者'\'(为1-3位数的八进制数),既然是八进制数,那么里面的\8明显是不合法的。

      通过对运行结果的分析,可以发现,编译器是忽略了'\80'中的\8,最终输出的是字符'0'结果,这就十分好玩了。如果大家觉得奇怪,还可以看下面的图片与上面的ASCII码表对比一下。

2. 不断升级

通过分析运行结果,可以发现,结果是忽略了'\184'中的\18,只是展示了字符'4'的结果。为了验证是输出字符'4',而不是输出'\4'的八进制ASCII码值所对应的字符,我给出了如下代码和运行结果。

希望此处有掌声(doge)

3. 究极变身模式

图一

图二

图三

图四

  • 图一分析得知:在'\1824'中的8前面是有效数字,还是8后面有多少个无效数字,结果都是只是保留了字符'4'。
  • 图二分析得知:'\8'后面的无效数字最多有两个,如果超出了,编译器就报错。
  • 图三分析得知:'\111824'中的有效数字有三个,为111。但是不管有效数字有多少个,'\111824'中已经出现了非法数字,那么最终结果还是输出字符'4'。
  • 图四分析得知:'\1111824'中的有效数字为四个,为1111。编译器报错了,原因很简单,有效数字的个数只能三个。

喜欢的话,点个赞再走呗。

相关文章
|
7月前
|
程序员 编译器 C语言
【c语言】c语言转义字符详解
【c语言】c语言转义字符详解
756 1
|
7月前
|
程序员 C语言
C语言中的转义字符表
C语言中的转义字符表
203 0
|
7月前
|
C语言
C语言转义字符第二篇和strlen库函数的使用
C语言转义字符第二篇和strlen库函数的使用
129 0
|
7月前
|
编译器 C语言
C语言的转义字符,转义字符的用法
C语言的转义字符,转义字符的用法
|
C语言
C语言初阶之转义字符(下)
输出水平制表符\t后,当前显示位置就会移动到本行的下一个水平制表位置,没有规定当前位置位于或超过本行最后的水平制表位置时程序该如何运作,水平制表位置要取决于操作系统的环境,有些环境把水平制表位置设定在每行开头8位的地方,还有些环境把水平制表位置设定在距每行开头4位的地方。
|
6月前
|
自然语言处理 编译器 C语言
转义字符使用详解【C语言】
转义字符使用详解【C语言】
|
7月前
|
C语言
C语言常量与变量、字符串与转义字符
C语言常量与变量、字符串与转义字符
52 0
|
7月前
|
C语言
C语言6🔥:本地变量与转义字符
C语言6🔥:本地变量与转义字符
50 0
|
7月前
|
编译器 C语言
C语言入门之变量、常量、字符串、转义字符
C语言入门之变量、常量、字符串、转义字符
|
7月前
|
C语言
C语言之转义字符详解
C语言之转义字符详解
298 0