这个代码布尔型操作
#include <iostream>
using namespace std;
int main(){
bool t=false;
cout<<t &&(!t)<<endl;
return 0;
}
显示我喜欢的类型 '布尔' 和 '的' 二进制 '操作< <'
这
无效操作数错误哪里不对?我无法理解这一点,请向我解释。我认为
&&
和!
是在C++中定义的。那又怎么了?
这个代码布尔型操作
#include <iostream>
using namespace std;
int main(){
bool t=false;
cout<<t &&(!t)<<endl;
return 0;
}
显示我喜欢的类型 '布尔' 和 '的' 二进制 '操作< <'
这
无效操作数错误哪里不对?我无法理解这一点,请向我解释。我认为
&&
和!
是在C++中定义的。那又怎么了?
“的类型无效的操作数'bool'和''二进制'运算符< <“”
这意味着第二<<
运营商正试图执行的(!t)和 'ENDL'。
<<
具有更高的优先级比&&
让你的cout语句执行这样的:
(cout << t) && ((!t) << endl);
添加括号来解决这个问题:
cout << (t && (!t)) << endl ;
看here运营时的顺序报表没有按预期进行评估。
添加括号来获得运营权的优先级:
cout << (t && !t) << endl;
等价的:
cout << false << endl;
我试过介绍新的bool m = t &&(!t),它的工作原理是 –
@user:再次,运营商的优先级......查找它! –
你需要一些更多的括号:
cout << (t && !t) << endl;
&&
比<<
低优先级,因此该语句被评估为(cout << t) && (!t << endl);
问题是与运算符优先级,为&&
具有优先级低于<<
。
cout<<(t && (!t))<<endl; // ok!
同样对于任何bool
可变t
表达t && (!t)
总是导致false
和t || (!t)
总是导致true
。 :)
非常感谢@mydogisbox它帮助了我太多 –
@ user466534很高兴提供帮助。 – mydogisbox