使用以下代码,此代码的输出是什么,为什么?
#include <stdio.h>
int main() {
printf("Hello world\n"); // \\
printf("What's the meaning of this?");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Jos*_*eld 10
第4行末尾的反斜杠转出后续的新行,使它们成为一条连续的行.因为我们可以看到//开始评论,所以第5行被注释掉了.
也就是说,您的代码相当于:
#include <stdio.h>
int main() {
printf("Hello world\n"); // \printf("What's the meaning of this?");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出只是"Hello world",带有一个新行.
编辑:正如Erik和pmg都说的那样,这在C99中是正确的,但不是C89.信用到期的信用.
它在翻译的第二阶段(ISO/IEC 9899:1999§5.1.1.2)中定义:
删除反斜杠字符(\)后面紧跟一个新行字符的每个实例,拼接物理源代码行以形成逻辑源代码行.