我试图通过 cout
流直接显示按位运算的输出。
在这种情况下我会出错:
cout<<a|b
不过,这似乎可行,
cout<<(a|b);
在算术运算的情况下,
cout<<a+b;
和
cout<<(a+b);
工作正常。
注意:我认为 a
和 b
是整数。
例如,
int a = 5;
int b = 6;
谁能解释一下这背后的原因?
最佳答案
<<
也是一个运算符,所以“将参数传递给”cout
与函数的工作方式并不相同。我把它放在引号中是因为你根本没有传递参数,它甚至不是一个函数。 cout
是一个为 <<
定义了运算符重载的对象运营商。
当你有类似 cout << a | b;
的东西时你最终得到 (cout << a) | b
由于Operator Precedence . cout << a
部分有效,因为 cout
<<
过载, 因此该部分返回对 cout
的引用,你最终会做 cout | b
,但是 cout
|
没有过载运算符,所以你会得到一个编译错误。
关于c++ - 当我使用 cout 显示输出时,为什么必须将按位运算符(例如 &、| 等)括在括号中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54193393/