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