这段代码的输出是什么?为什么?

Jos*_*lio 2 c gcc comments

使用以下代码,此代码的输出是什么,为什么?

#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)中定义:

删除反斜杠字符(\)后面紧跟一个新行字符的每个实例,拼接物理源代码行以形成逻辑源代码行.