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

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

本文关键字:运算符 结果 std cout 插入 重载 为什么      更新时间:2023-10-16

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

法典

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

结果

16

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

二进制中的 2 是10

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

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

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