首页 > 解决方案 > 为什么 Visual Studio 在我的 C++ 程序中输出这个(添加字符串和字符)?

问题描述

我一直在阅读Bjarne Stroustrup的《 The C++ Programming Language 》一书。在第 105 页上,我尝试了练习 12,我遇到了一件(对我而言)疯狂的事情。在此之后,我成功地解决了这个练习,但我很感兴趣,这是如何以及为什么会发生的?这是最小化的代码(仅适用于这种特定情况):

int main()
{
    char c;
    std::cin >> c;
    std::cout << "" + c;
}

尝试输入一个字符,结果非常令人惊讶。对于'a',我得到Community\VC\Tools\MSVC\14.28.29910\include\vector,对于'Z',我得到o\2019\Community\VC\Tools\MSVC\14.28.29910\include\vector。这也适用于我尝试输入的其他字符。我真的找不到任何模式。向量目录与输入的字符有什么关系?

我知道这种添加字符串与字符是被禁止的(添加不同的实体)并且我之后使用了很多替代方法,但我很感兴趣:为什么会发生这种情况?Visual Studio 从哪里获得一些随机目录,对其进行切片并在控制台中提供它?


作为评论,我现在知道我实际上将字符串文字的地址和字符的数值加在一起。但是现在我很感兴趣:为什么字符串文字的地址总是一样的?考虑以下代码:

int main()
{
    char c;
    std::cin >> c;
    std::cout << "" + c << std::endl << &"" << std::endl << &"Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910/include/vector";
}

字符串文字“”和“Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910/include/vector”(我得到的最长字符串)的地址总是相同的。为什么?内存地址不是随机给的吗?

标签: c++charactervisual-studio-2019

解决方案


推荐阅读