a&&b&&c 和a||b||c 有什么区别?
看看例子
int main(){
bool a=true,b=false,c=true;
if(a&&b&&c){
cout<<"a&&b&&c=true"<<endl;
}else{
cout<<"a&&b&&c=false"<<endl;
}
return 0;
}
会是怎样的结果?
a&&b&&c=false
如果三个都为真,那么输出结果一定是真;三个当中若有一个是假,那么输出结果为假。
int main(){
bool a=false,b=false,c=true;
if(a||b||c==true){
cout<<"a||b||c=true"<<endl;
}else{
cout<<"a||b||c=false"<<endl;
}
return 0;
}
那一定是真的啦!
a&&b&&c 当a为0时,表达式为0,不必求b与c。
a||b||c 当a为1时,表达式为1,不必求b与c。
什么意思?举个例子
int main(){
int a=0,b=1,c=2;
int d=(a||b+c&&b==c);
cout<<d<<endl;
}
注意一下,&& 的优先级要高与|| 。&& 有点类似于* ,|| 类似于+ 。逻辑运算符里! 的优先级最高。
我们分析一下,a||b+c&&b 是0||1+2&&1 ,&& 优先级最高,看b+c&&b 值代入算1+2&&1 为1,然后a||1 代入算0||1 为1,最终结果为1
举一反三:
int main(){
int a=0,b=1,c=2;
int d=(a&&b+c&&b==c);
cout<<d<<endl;
}
a&&b+c&&b 代入算0&&3&&1 ,结果为0.
优先级顺序:算术运算符最高,关系运算符次之,逻辑运算符最低。
|