为什么在两个字符串之间添加 space 会连接 c 中的字符串?

Why does adding a space between two strings concat the strings in c?

抱歉,如果我要问一个非常基本的问题。我试图搜索它,但我一直无法找到任何答案。

当我运行以下代码时:

#include <stdio.h>

int main() {
    char *temp = "sai" "krishna";
    printf("%s\n", temp);
    return 0;
}

它打印 saikrishna

您能具体说明为什么会这样吗?我们不应该使用 strcat 或其他串联技术吗?

能否请您参考任何相关文档以及我们可以在哪里使用该技术?

这是一种语言功能。 C 允许字符串文字在编译时连接起来。当您有很长的字符串文字跨越多行时,或者当您想要分解包含十六进制转义序列的字符串文字时,它会很方便。 (例如 puts("\x42AD") 将转换为字符 0x42AD,这可能是无意义的和无意的,而不是 puts("\x42" "AD") 将打印 BAD.

strcatstrcpy 用于 运行 时间的字符串处理。如果你有两个字符串字面量,它们是编译时常量,也可以提前由编译器连接起来,以节省执行时间。