作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
你能帮我理解这个简单代码的输出吗:
const char str[10] = "55\01234";
printf("%s", str);
输出是:
55
34
最佳答案
字符串中的字符序列 \012
被解释为 octal escape sequence .解释为八进制的值 012
是十进制的 10
,这是大多数终端上的换行符 (\n
)。
来自维基百科页面:
An octal escape sequence consists of
\
followed by one, two, or three octal digits. The octal escape sequence ends when it either contains three octal digits already, or the next character is not an octal digit.
由于您的序列包含三个有效的八进制数字,因此它将被解析。它不会继续 34
中的 3
,因为那将是第四位数字并且仅支持三位数字。
所以你可以把你的字符串写成 "55\n34"
,这样你看到的更清楚,而且更便携,因为它不再对换行符进行硬编码,而是让编译器生成合适的东西。
关于c - 了解包含反斜杠 (\012) 的 printf 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29819239/
我是一名优秀的程序员,十分优秀!