为什么当我使用额外的括号而不使用运算符重载时,插入运算符在 std::cout 中给出不同的结果?
Why does the insertion operator give a different result in std::cout when I use extra brackets without operator overloading?
根据我的理解,插入运算符在与任何 ostream 对象(如std::cout
)一起使用时,将简单地插入后面的值。但是当我使用括号时,我得到的结果与预期不同。我试图理解为什么在下面显示的代码中使用带有括号的插入运算符会在C++中给出以下结果?
法典
std::cout << (2 << 3) << std::endl;
结果
16
当你像这样括起来时,它会变成位移而不是插入运算符。
二进制中的 2 是10
左移 3 后,二进制变为10000
,相当于 16
为什么当我使用额外的括号时,减法运算符在数学表达式中给出不同的结果:1 - (1 + 1)
?答:括号更改操作顺序。
将 3 插入 2 是什么意思?答:2 << 3
根本不是流插入运算符。毕竟,2 不是字符流。它是位移左运算符。不同的运算符对于不同的类型有不同的含义。
相关文章:
- 使用++运算符会导致意外的结果
- 三元运算符在返回语句中给出意外的结果
- oStream 不打印添加两个 valarray 的结果(使用运算符重载)
- 当关系运算符的含义相同时,为什么结果不同?
- 有没有办法将 for 循环结果返回到像三元运算符这样的函数中?
- C++:比较运算符>和字符串文本的意外结果
- 为什么 == 运算符没有产生与 strcmp 相同的结果?
- 具有预分配结果C++的重载加运算符
- 使用 C++ 中的运算符重载显示不正确的结果
- 为什么当我使用额外的括号而不使用运算符重载时,插入运算符在 std::cout 中给出不同的结果?
- 为什么这个条件运算符的计算结果为 int?
- 为什么>>运算符在不同的编译器上显示不同的结果?
- 运算符的两个不同结果 - 在 c++11 中
- C++ 中的增量运算符未获得正确的结果
- 为什么在std :: string上尺寸运算符会产生意外结果
- 重载前增量运算符使用重载后增量运算符内的变量结果
- C++运算符和带枚举的计算结果为 false
- sizeof(…)运算符结果的使用令人困惑
- 根据运算符推断模板返回类型:结果
- 插入运算符结果后,垃圾出现在向量中