我正在阅读 K&R 书中有关 C 的介绍部分。为了查看哪种代码格式会产生错误,我尝试将
printf("hello world!");
分成不同的行,如下所示。问题是,我不知道我的结果是否与实现无关。我用的是GCC编译器。
C 标准对多行表达式有何规定?编译器如何处理它们?
/*
printf("hello wor
ld!\n");
*/
/*
printf("hello world!
\n");
*/
printf("hello world!\
n");
/*
printf("hello world!\n
");
*/
printf("hello world!\n"
);
printf("hello world!\n")
;
注释掉的表达式会产生错误,而其余的则不会。
第三个表达式的行为是出乎意料的。通常
"
需要在同一行终止,但第三个表达式可以工作。
第三个表达:
printf("hello world!\
n");
输出到控制台:
hello world! n
看起来
\
可以用来将一个字符串分成多行,但是n");
之前的空格被包含在字符串中。这是标准规则吗?
118 2. 删除紧跟换行符的每个反斜杠字符 (\) 实例,拼接物理源代码行以形成逻辑源代码行。
基本上就这样写了
printf("hello world!\
n");
与书写相同
printf("hello world! n");
任何两个连续的字符串文字将被组合。因此,这是完全有效的 C:
printf("hello world!\n"
""
""
"next line\n"
);
...或者在多行中显示单行:
printf("h" "e"
"llo "
"world!\n"
);