引言
在 C++的奇妙世界中,逻辑运算犹如构建复杂程序结构的关键基石。当我们深入探索 C++的基础时,逻辑运算部分展现出了其独特而重要的地位。
逻辑运算不仅仅是简单的真假判断,它更是决定程序流程走向、实现复杂条件判断的核心要素。通过逻辑运算,我们能够让程序根据不同的情况做出精准的决策,如同为程序注入了智慧的灵魂。
无论是在简单的条件判断语句中,还是在构建复杂算法和逻辑结构时,逻辑运算都扮演着不可或缺的角色。它让我们能够以清晰、简洁的方式表达各种条件和关系,使得代码更加易于理解和维护。
逻辑运算符
符号 | 含义 |
---|---|
&& | 与 |
|| | 或 |
! | 非 |
其实关于与或非这三种逻辑运算,可能大家都多多少少有听过,只不过不太清楚他们在代码中到底是如何使用。接下来,我们一起来一个一个的详解他们的用法。
首先是“逻辑与”,我们可以将逻辑与理解为“并且”,举个例子吧:
根据图片例子,我们分析可以得知,当且仅当同时满足两个条件的客户才符合条件,转化为公式:办卡4年&&存款过1万。两个条件同时满足的时候即可以得到结果true,不然得到的就是false。
比如:a > 1 && b < 2,这样一行代码可能我们看到的时候觉得很复杂,但是将其改为:a > 1 并且 b < 2,这样一看就能够轻松理解了。逻辑运算符和比较运算符有一点是一样的,他们的结果只有两种情况,即true或false。那么,对于逻辑与运算而言,只有运算符两边都是成立(true)的时候,该逻辑运算的结果才会是true。
接着,我们来聊聊“逻辑或”,同样的我们可以将逻辑或理解为或者。如果将上面图片的例子修改为或者连接,对应的公式即为:办卡4年||存款过1万。两个条件只要满足其中一个就可以得到结果true,当两个条件都不满足的时候才得到结果false。
最后,就是”逻辑非“了,它用于否定,即如果原本结果是true的式子,整体加上非运算,那么结果将会变为false。例如,“我吃饱了”,这句话加上非运算即为:“我吃饱了不成立”。此时的语义与之前相反。再例如a > 4【a的值为3】,这个式子原本的结果为false,加上非运算:!(a>4),此时的结果就是true。再例如,!b【b的值为-2】。我们知道非零的数字即为true,所以b可以理解为true,那么!b的结果就是false了。
运算优先级
在C++中,运算是有优先级的,接下来我们来看看常用运算符的优先级【从上至下优先级降低】。
运算符 | 名称 |
---|---|
() | 括号 |
! | 非运算 |
* / % // | 乘法、除法、取余、取整运算 |
+ - | 加法、减法运算 |
> >= < <= | 比较运算 |
== != | 等于、不等于 |
&& | 与运算 |
|| | 逻辑或 |
= += -= | 各种赋值运算 |
有了优先级表之后,我们就可以计算一些复杂的式子了。例如:
#include <iostream>
using namespace std;
int main () {
int num1 = 10, num2 = 0;
bool ans = num1 > 10 || num2 + 2 < 4 && num1 != num2;
cout << ans;
}
上面这段代码得到的结果应该是true,首先我们发现与运算优先级高于或运算,所以先去计算与运算左右的运算式,得到:num1 > 10 || true && true。接下来计算与运算为true,那么式子就变成了num1 > 10 || true,那么最终结果即为true。
实际应用
请接受用户输入的一个整数,判断该数是否既为偶数又是3的倍数,如果是那么输出“yes”否则输出“no”。
分析这道题,需要判断是否为偶数、是否为3的倍数,这里就需要用到取余运算“%”,因为需要同时满足又要用到逻辑与运算。那么,你们是否可以完成这道题呢?
#include <iostream>
using namespace std;
int main () {
// 首先完成用户输入数据的接收
int num;
cin >> num;
// 利用if语句进行判断
if (num % 2 == 0 && num % 3 == 0) {
cout << "yes";
} else {
cout << "no";
}
}
总结
那么这节的内容就到这里了,逻辑运算的内容看起来不多,后续会用到的地方却是不少。如果有什么问题,可以私信我噢~