您能帮我了解一下此简单代码的输出:

const char str[10] = "55\01234";
printf("%s", str);

输出为:
55
34

最佳答案

字符串中的字符序列\012解释为octal escape sequence。解释为八进制的012值是十进制的10,这是大多数终端上的换行符(\n)字符。

在Wikipedia页面上:



由于您的序列包含三个有效的八进制数字,因此将对其进行解析。它不会继续使用3中的34,因为那是第四位,并且仅支持三位。

因此,您可以将字符串写为"55\n34",这很清楚您所看到的内容,并且更便于移植,因为它不再对换行符进行硬编码,而是让编译器生成合适的东西。

关于c - 了解包含反斜杠(\012)的printf的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29819239/

10-12 05:03