這個代碼布爾型操作
#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