布尔类型操作

dat*_*ili 4 c++ boolean

这段代码

#include <iostream>

using namespace std;
int main(){
  bool t=false;
  cout<<t &&(!t)<<endl;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

告诉我这样的错误

类型'bool'和''到二进制'运算符<<'的无效操作数

怎么了?我无法理解这一点,请向我解释.我认为,&&!C++中的定义.

那有什么不对?

N_A*_*N_A 16

"类型'bool'和''到二进制'运算符<<'的无效操作数"

这意味着第二个<<运算符正在尝试执行(!t)和'endl'.

<<有一个更高的优先级,&&所以你的cout语句执行如下:

(cout << t ) && ( (!t) << endl );

添加括号来解决此问题:

cout << (t && (!t) ) << endl ;

当语句未按预期进行评估时,请查看此处的操作顺序.


Ker*_* SB 6

添加括号以获得运算符的优先权:

cout << (t && !t) << endl;
Run Code Online (Sandbox Code Playgroud)

等价的:

cout << false << endl;
Run Code Online (Sandbox Code Playgroud)