c++ - + 运算符在 cout 中做什么?

标签 c++ iostream

在下面的代码中,我感到困惑并在应该是 <<

的地方添加了一个 +
#include <iostream>
#include "Ship.h"

using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    char someLetter = aLetter(true);
    cout <<"Still good"<<endl;
    cout << "someLetter: " + someLetter << endl;
    return 0;
}

应该是

cout << "someLetter: " << someLetter << endl;

输出的错误代码:

Hello world!
Still good
os::clear

我不明白的是为什么编译器没有捕获到任何错误以及 os::clear 是什么意思?还有,为什么“someLetter:”不在行首?

最佳答案

在这里,"someLetter: "是一个字符串文字,即 const char *指针,通常指向存储所有字符串文字的只读内存区域。

someLetterchar , 所以 "someLetter: " + someLetter执行指针运算并添加 someLetter 的值到指针中存储的地址。最终结果是一个指针,指向您打算打印的字符串文字之后的某处。

在你的例子中,指针似乎在符号表中结束并指向 ios::clear 名称的第二个字符。方法。这完全是任意的,指针可能最终指向另一个(可能无法访问的)位置,具体取决于 someLetter 的值。以及字符串文字存储区的内容。总之,此行为是未定义的,您不能依赖它。

关于c++ - + 运算符在 cout 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10648854/

相关文章:

c++ - 在vs2010中使用iostream时,出现错误C2039 : 'exit' : is not a member of '` global namespace''

sockets - Boost Asio tcp::iostream构造每秒钟使用都会引发访问冲突异常

c++ - 如何检查流提取是否消耗了所有输入?

c++ - 判断静态初始化是否结束

c++ - 谁能给我解释一下我关于二叉树的作业?我觉得很奇怪

c++ - 我想存储指向函数的空指针及其类型

c++ - 标准无操作输出流

c++ - ADTF 录音文件格式

c++11 - 为什么 reference_wrapper 对于内置类型的行为不同?

c++ - fstream、ofstream、ostream、iostream 之间的区别