在网络搜索中我们可以查到逻辑运算符的作用是在形式逻辑中,逻辑运算符或逻辑联结词把语句连接成更复杂的复杂语句。光了解了作用而含义却不明,那么逻辑运算符到底是什么呢?不用担心接下来课课家笔者给大家介绍C语言中的逻辑运算符。
下面笔者给大家假设有这样一种情况,比如我们的软件要求用户必须成年且成绩大于等于60,或许大家会想到使用嵌套的if语句,具体类似为下面这样的代码:
#include
int main()
{
int age;
float score;
printf("请输入你的年龄和成绩:");
scanf("%d%f", &age, &score);
if(age>=18){
if(score>=60){
printf("你满足条件,欢迎使用该软件\\n");
}else{
printf("抱歉,你的成绩不及格,不能使用该软件\\n");
}
}else{
printf("抱歉,你还未成年,不能使用该软件!\\n");
}
return 0;
}
以上这种方法虽然能够行得通,但不够简洁和专业,其实我们可以将其压缩为一条ifelse语句,具体如下代码:
#include
int main()
{
int age;
float score;
printf("请输入你的年龄和成绩:");
scanf("%d%f", &age, &score);
if(age>=18&&score>=60){
printf("你满足条件,欢迎使用该软件\\n");
}else{
printf("抱歉,你还未成年,或者成绩不及格,不能使用该软件!\\n");
}
return 0;
}
&&是一个新的运算符,称为逻辑运算符,表示age>=18和score>=60两个条件必须同时成立才能执行if后面的代码,否则就执行else后面的代码。
在高中数学中我们就学过逻辑运算,比如p为真命题,q为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。在C语言中其实也有类似的逻辑运算(图1):
图1
◎逻辑运算的结果
在编程中我们一般将零值称为“假”,将非零值称为“真”。逻辑运算的结果也只有“真”和“假”,“真”对应的值为1,“假”对应的值为0。
①与运算(&&)
参与运算的两个表达式都为真时,结果才为真,否则为假。比如:
5&&0
5为真,0为假,相与的结果为假,也就是0。
(5>0)&&(4>2)
5>0的结果是1,为真,4>2结果是1,也为真,所以相与的结果为真,也就是1。
②或运算(||)
参与运算的两个表达式只要有一个为真,结果就为真;两个表达式都为假时结果才为假。比如:
10||0
10为真,0为假,相或的结果为真,也就是1。
(5>0)||(5>8)
5>0的结果是1,为真,5>8的结果是0,为假,所以相或的结果为真,也就是1。
③非运算(!)
参与运算的表达式为真时,结果为假;参与运算的表达式为假时,结果为真。比如:
!0
0为假,非运算的结果为真,也就是1。
!(5>0)
5>0的结果是1,为真,非运算的结果为假,也就是0。
输出逻辑运算的结果:
#include
int main(){
int a = 0, b = 10, c = -6;
int result_1 = a&&b, result_2 = c||0;
printf("%d, %d\\n", result_1,!c);
printf("%d, %d\\n", 9&&0,result_2);
printf("%d, %d\\n", b||100,0&&0);
return 0;
}
运行结果:
0,0
0,1
1,0
优先级
逻辑运算符和其它运算符优先级从低到高依次为:
赋值运算符(=)<&&和||<关系运算符<算术运算符<非(!)
&&和||低于关系运算符,!高于算术运算符。
按照运算符的优先顺序可以得出:
a>b&&c>d等价于(a>b)&&(c>d)
a+b>c&&x+yc)&&((x+y)
另外,逻辑表达式也可以嵌套使用,比如a>b&&b||9>c,a||c>d&&!p。
逻辑运算符举例:
#include
int main(){
char c = 'k';
int i = 1, j = 2, k = 3;
float x = 3e+5, y = 0.85;
printf("%d,%d\\n",!x*!y,!!!x);
printf("%d,%d\\n",x||i&&j-3,i
printf("%d,%d\\n",i==5&&c&&(j=8),x+y||i+j+k);
return 0;
}
运行结果:
0,0
1,0
0,1
在本例中!x和!y分别为0,!x*!y也为0,故其输出值为0。由于x为非0,故!!!x的逻辑值为0。对x||i&&j-3式,先计算j-3的值为非0,再求i&&j-3的逻辑值为1,故x||i&&j-3的逻辑值为1。对i
本次C语言基础面面观之逻辑运算符的教程对大家的思维转换要求比较高,大家可能需要多钻研几遍才能转换过来。另外以后如果有补充的话笔者会在此继续补充,希望这个教程对大家学习C语言能起到一定的帮助作用!
¥299.00
¥498.00
¥29.00
¥399.00