我在C中有以下代码:
#include<stdio.h>
void main(){
printf("a" "b" "c");
}
输出:
abc
任何人都可以解释原因吗?
我猜测它是"a" "b" "c"
预处理为"abc"
。我是对的还是别的?
答案 0 :(得分:8)
相邻的字符串文字作为翻译阶段6 的一部分连接在一起。
阶段简述(来源:C99标准,转述)
\
结尾的行被拼接答案 1 :(得分:4)
相邻的字符串文字在汇编 翻译阶段中合并.6。因为"a" "b" "c"
被进一步视为"abc"
字符串文字。
如果你不熟悉这个术语,第6阶段有点介于预处理和实际之间,#34;正确的&#34;汇编
答案 2 :(得分:1)
因为你正在做String literal concatenation
传递给printf的结果cstring是"abc\0"