为什么在两个字符串之间添加 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
.
strcat
和 strcpy
用于 运行 时间的字符串处理。如果你有两个字符串字面量,它们是编译时常量,也可以提前由编译器连接起来,以节省执行时间。
抱歉,如果我要问一个非常基本的问题。我试图搜索它,但我一直无法找到任何答案。
当我运行以下代码时:
#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
.
strcat
和 strcpy
用于 运行 时间的字符串处理。如果你有两个字符串字面量,它们是编译时常量,也可以提前由编译器连接起来,以节省执行时间。