在同一赋值语句中将多个字符串文字转换为const char *

Ven*_*cat 5 c++ string

我是C ++的新手,我在下面的代码片段中遇到了这个代码片段,这对我来说似乎很奇怪。

const char* keys = "hello" "world";
std::cout << keys << std::endl;
Run Code Online (Sandbox Code Playgroud)

上面的代码在控制台中显示helloworld。在同一条语句中将两个字符串文字分配给const char *是否在语法上有效?如果是这样,它将如何存储在内存中?

joh*_*ohn 5

这是C ++(和C)的规则,在编译之前将相邻的字符串文字串联在一起(但在IIRC宏扩展之后)。

这发生在任何地方,而不仅仅是作为赋值语句的一部分。