有人可以解释一下这个输出吗?

0 c++ cout c++11 output

cout<<"ccccc"+2;
Run Code Online (Sandbox Code Playgroud)

输出:

ccc
Run Code Online (Sandbox Code Playgroud)

我尝试在网上搜索它,我知道这是一个非常愚蠢的问题,但在任何地方都找不到任何东西。如果有人可以帮助我,请。

P__*_*J__ 7

"ccccc"+2;
Run Code Online (Sandbox Code Playgroud)

"ccccc"衰减到const char *引用字符串文字的第一个字符的指针"ccccc"。当您添加2到它时,结果引用字符串文字的第三个元素。

它等同于:

const char *cptr = "ccccc";

cptr += 2;

cout << cptr;
Run Code Online (Sandbox Code Playgroud)

  • 在 C++ 中,`"ccccc"` 衰减为 `const char *`。`char *cptr = "ccccc";` 应该给出编译时错误。 (2认同)