C++基础:逻辑运算符与逻辑表达式

前言

内容纯属原创,如有雷同,纯属巧合!

如转载请注明出处!

参考练习

无具体练习题,多练练条件分支类型的语句(比如if、while等)

当然你可以去看第五条,第五条里有自编的练习

一、逻辑运算符和逻辑表达式的意思与意义

逻辑运算符,就是与+-*/类似的运算符号

逻辑表达式,就是带有逻辑运算符的表达式

逻辑表达式的意义,其实就是做比较、判断之类的,比如 4>5并且5>4 这是不可能的,

所以说逻辑表达式就是为了求出这个式子、判断、比较等是不是正确的

逻辑运算符的存在就是为了拼凑出逻辑表达式

二、true与false,1与0(if的讲解)

会的DALAO们请自行跳过

在C++中,如果你想要看一个数是否与你想的一样,那么就需要用到if了

if的意思就是判断,他的用法就是

if(条件a){
    成立,那么怎么怎么着
}
不成立,跳过里面的内容,从这里往下继续运行

那么我们可以清楚的看到

如果条件a成立,那么就进入括号里面的内容,然后再到括号外面的内容

如果条件a不成立,那么直接进入括号外面的内容

那我们来尝试尝试

if(2>1){
    cout<<"2>1"<<endl;
}
cout<<"2<1"<<endl;

那么你觉得它输出的是什么呢

它输出的是:

2>1

2<1

那么我们如果不想让他输出2<1呢?

这就要用到else语句了

else语句的用法是:

if(条件a){
    成立,那么怎么怎么着
}
else
{
    如果if的语句不成立,那么怎么怎么着
}
然后怎么怎么着

注意,else语句的使用,必须要有前置的if或者else if语句才能使用

else if语句我后面会讲

如果if里的不成立,那么进入else括号里面的

最后到括号外面的

如果if成立就进入if括号里面的,然后到括号外面的

else语句连接的是离自己最近的if语句或者else if语句,比如

if(条件1){
    条件1成立要做的事情
}
if(条件2){
    条件2成立要做的事情
}
else
{
    条件2不成立要做的事情
}

这样,才是else的连接方式

但是如果我想让条件1成立后不再检测条件2,但是如果条件1不成立要检测条件2,如果条件1和2都不成立就进入else,我该怎么写呢?

好的,else if语句来了

if(条件1){
    条件1成立要做的事情
}
else if(条件2){
    条件2成立要做的事情
}
else
{
    条件2不成立要做的事情
}

这样就成功了

else if只能连接if语句,但后面可以连接其他的else if或者else,else if可以连接无数个,但后面的else只能连接1个

else if的用法是

if(条件a){
    成立,那么怎么怎么着
}
else if(条件b)
{
    成立,那么怎么怎么着
}
然后怎么怎么着

如果前面的if成立的话,走完if括号里的就直接走外面的了

但如果if不成立,就判断else if

else if成立的话,就执行else if括号里的,然后执行括号外面的

else if不成立的话,就执行括号外的

 

对于条件分支,就这三种,但后面的逻辑运算符和逻辑表达式讲的是条件的问题

我们先把if、else、else if的意思理清一下

学过这些单词的肯定都知道

if是如果

else是或者

else if就是或者如果了

那么条件分支讲到这里,我们讲一下条件

条件有两种形态,一是成立,二是不成立

成立在C++以及部分语言里,他可以被代表为true,也可以代表为1

不成立可以被代表为false或者0

true和false大家可能能理解,但是可能不理解为什么是0和1

0和1呢出自二进制,0就是没有,1就是有

比如二进制的10

1是有,0是没有

那么这个数的十进制是3

但如果是11

两个有

这个数的十进制是4

等等等等

这里我不细讲

总之,在C++中,除了0以外的数都等于true(负数我不确定,但正数我绝对确定,比如if(1)就是true)

当然,如果你想储存true或者false的话,可以用bool类型储存

三、认识逻辑运算符及其用处

逻辑运算符分为三种

1.&&

2.||

3.!

我们这里挨个讲

1.&&

&&又称逻辑与,其实你想他的意思的时候只要把“逻辑”二字去掉就行了

他的用处是什么呢?

比如我们正常写的时候

不用逻辑与运算符是这样的

if(a>b){
    if(b>c){
        cout<<"a>c";
    }
}

是不是很麻烦呢,因为要写两个if

但是我们加上逻辑与运算符

if(a>b&&b>c){
    cout<<"a>c";
}

当然我们再进一步拓展,把大括号去掉,就成了这样

if(a>b&&b>c)cout<<"a>c";

是不是完全不一样了呢?

逻辑与,也就是&&的意义就是,当条件a与条件b同时正确时,那么就返回true

这里的“与”字需要重读

这样可以让你更加清楚的明白逻辑与的意思

 

2.||

||又称逻辑或,怎么样,是不是瞬间懂了呢?

或嘛,也就是说条件a或条件b成立,那么返回true

“或”也要重读

当然,如果两个都成立,也返回true

比如这样

if(a>b||a<b)cout<<"a不等于b";

是不是又双叒叕瞬间懂了呢

那么||就讲到这里了,因为实在太简单了

 

3.!

这里的!可不是一般的!

他的意思是不等于

就比如刚刚讲逻辑或的时候,我输出了一个“a不等于b”

我们就可以写成a!=b

!的大名叫做逻辑非

注意!使用英文输入法写出来的

不信你看看

!!!!

!!!!

底下的是英文输入法的,也就是逻辑非

当然,我们把逻辑或的例子改一改(其实是偷懒而已)

if(a!=b)cout<<"a不等于b";

当然了,逻辑非不只能变成!=

!=才是不等于的意思!!!!

!是逻辑非的意思!!!

那么我们还可以这样写

if(!(1>2))cout<<"1>2";

 

if(1>2)cout<<"1>2";

 

看出不同了吗

第一种用了逻辑非

也就是说当非1>2的时候

也就是说当1不大于2的时候

那么怎么怎么着

所以说返回了true

当然第二种的话

1>2肯定不对啊

所以说返回false

注意,!的用法就只有两种

!=是不等于

!条件a

不要告诉我有什么!> !<之类的,没有!!!

如果你真的想写a!>b的话

你应该这样写!(a>b)

四、逻辑表达式的组成与运用

我们先把逻辑运算符捋一下

条件a&&条件b

条件a||条件b

!条件a

好了开始吧

逻辑表达式非常简单啊啊

亿点都不难

比如

!(a>b)就是逻辑表达式(我真的复制了,你听我狡辩!)

当然,还有更麻烦的

(!(a>b)||!(a<c))&&(!(a<b)&&!(a>c))

这句话的意思是:

当a不大于b或者a不小于c,并且a不小于b且a不小于c

也就是说a小于等于b或者a小于等于c时,a必须等于b且等于c才能返回true

也就是说!!!!

a==b&&a==c

有没有感受到逻辑表达式的魅力呢(doge)

(我真的是故意这么绕的,你们听我狡辩*2)

其实逻辑表达式就是看你的需求去组合了

比如我想让a>b并且b>c

正常写是这样:

a>b&&b>c

麻烦点是这样:

!(a<b)&&!(b<c)

简单点是这样:

a>c

所以说这个就要看你的意愿了

五、灵活运用逻辑运算符构成逻辑表达式以及分析逻辑表达式

咳咳,我们来测试下(其实这个标题就是为了测试)

a=13,b=12,c=9

1.

 

(!(a>b)&&!c)&&a

 

请问是true还是false

2.

 

!(!((!(a<b)&&c)&&a*c>b)||!(!(!a))))&&(a+b>c||a+c>b||b+c>a)

 

请问是true还是false

不要瞎蒙啊(内心:看不懂吧?快瞎蒙快瞎蒙)

 

这么简单别错啊

1.false

2.true

 

六、总结

又到了一年n(n^n^n^n)度的总结时刻了

这次我们联系了逻辑表达式和逻辑运算符

出错的原因qwq

(1)逻辑运算符写错(你干啥吃的)

(2)逻辑错了

(3)变量名写错(你干啥吃的*2)

(4)if或者else或者else if用错(你干啥吃的*3,去第二部分吧)

(5)没搞懂i--或者--i(这个不归这部分管,但属于逻辑)

(6)格式错误(你干啥吃的*n^n^n)

 

那么今天到这里,欢迎下次再来看qwq

posted @ 2020-08-06 15:10  无咕  阅读(2187)  评论(0编辑  收藏  举报
/* 点击爆炸效果*/