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

Why does the insertion operator give a different result in std::cout when I use extra brackets without operator overloading?

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

代码

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

结果

16

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

2 的二进制是 10

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

当我使用额外的括号 1 - (1 + 1) 时,为什么减法运算符在数学表达式中给出不同的结果?答:括号改变了运算顺序。

3插入2是什么意思?答:2 << 3根本就不是流插入运算符。毕竟 2 不是字符流。它是位左移运算符。不同的运算符对于不同的类型有不同的含义。