c++ - 为什么当我使用没有运算符重载的额外括号时,插入运算符会在 std::cout 中给出不同的结果?

标签 c++ c++11 operators cout ostream

根据我的理解,当与任何 ostream 对象(如 std::cout)一起使用时,插入运算符将简单地插入后面的值。但是当我使用括号时,我得到的结果与预期的不同。我试图理解为什么在下面显示的代码中使用带括号的插入运算符会在 C++ 中给出以下结果?

代码

std::cout << (2 << 3) << std::endl;

结果

16

最佳答案

当你像那样把它括起来时,它变成了位移位而不是插入运算符。

二进制中的 2 是 10

左移 3 后,二进制变为 10000 相当于 16

关于c++ - 为什么当我使用没有运算符重载的额外括号时,插入运算符会在 std::cout 中给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56844714/

相关文章:

swift - 自定义范围运算符 - Swift 4.1

c++ - CMake:使用相同的代码但包含不同的包含路径构建多个库

c++ - Win32 无法从共享内存获取数据

c++11 std::array vs 静态数组 vs std::vector

python - python中if条件中的Contains()函数 `in`

swift - "??"在 : let x = y ? 的上下文中代表什么? "Candy bar"

c++重载ostream不适用于具有空参数的默认构造

c++ - 几何着色器只创建一个图元

c++ - C++11 是否优化了 lambda 中的尾递归调用?

c++ - Armadillo ,在每一列中找到最大索引