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

时间:2019-07-02 02:55:25

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

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

代码

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

结果

16

2 个答案:

答案 0 :(得分:1)

像这样用括号括起来,它将变为位移而不是插入运算符。

2的二进制为10

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

答案 1 :(得分:1)

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

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