当字符串与数组值连接时,cout 打印垃圾

cout printing garbage when string is concatenated with array value

这是我最基本的 C++ 代码:

#include <iostream>

char values[] = {'y'};

int main() {
    std::cout << "x" + values[0];
}

我的预期输出只是 xy,但我只是随机 text/symbols

也许你打算这样做:

std::cout << "x" << values[0];

否则,您将使用 "x"(它会衰减为指向 const 数组第一个元素的指针,该数组在内存中保存字符 {'x', '[=13=]'}),并将 'y'(转换为 int 时的数值为 121)添加到该指针。

向指针添加一个整数会改变它指向的内容。您正在读取超出内存中 'x' 字符 121 个字节的内存,因此您将读取随机字节,或导致访问冲突。