逻辑运算,什么是逻辑运算
计算机中除了进行加、减、乘、除等基本算术运算外,还可对两个或一个逻辑数进行逻辑运算。所谓逻辑数,是指不带符号的二进制数。利用逻辑运算可以进行两个数的比较,或者从某个数中选取某几位等操作。计算机中的逻辑运算,主要是指逻辑非、逻辑加、逻辑乘、逻辑异四种基本运算。
现在假设有这样一种
情况,我们的软件比较特殊,要求使用者必须成年,并且成绩大于等于60,该怎么办呢?或许你会想到使用嵌套的if语句,类似下面这样的代码:
#includestdio.hintmain(){intage;floatscore;printf("请输入你的年龄和成绩:");scanf("%d%f",age,score);if(age=18){if(score=60){printf("你满足条件,欢迎使用该软件\n");}else{printf("抱歉,你的成绩不及格,不能使用该软件\n");}}else{printf("抱歉,你还未成年,不能使用该软件!\n");}return0;}
这种方法虽然能够行得通,但不够简洁和专业,我们可以将其压缩为一条ifelse语句:
#includestdio.hintmain(){intage;floatscore;printf("请输入你的年龄和成绩:");scanf("%d%f",age,score);if(age=18score=60){printf("你满足条件,欢迎使用该软件\n");}else{printf("抱歉,你还未成年,或者成绩不及格,不能使用该软件!\n");}return0;}
是一个新的运算符,称为逻辑运算符,表示age=18和score=60两个条件必须同时成立才能执行if后面的代码,否则就执行else后面的代码。在高中数学中,我们就学过逻辑运算,例如p为真命题,q为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。在C语言中,也有类似的逻辑运算:
逻辑运算的结果在编程中,我们一般将零值称为“假”,将非零值称为“真”。逻辑运算的结果也只有“真”和“假”,“真”对应的值为1,“假”对应的值为0。
1)与运算()参与运算的两个表达式都为真时,结果才为真,否则为假。例如:
50
5为真,0为假,相与的结果为假,也就是0。
(50)(42)
50的结果是1,为真,42结果是1,也为真,所以相与的结果为真,也就是1。
2)或运算()
参与运算的两个表达式只要有一个为真,结果就为真;两个表达式都为假时结果才为假。例如:
10
0
10为真,0为假,相或的结果为真,也就是1。
(50)
(58)
50的结果是1,为真,58的结果是0,为假,所以相或的结果为真,也就是1。
)非运算(!)参与运算的表达式为真时,结果为假;参与运算的表达式为假时,结果为真。例如:
!0
0为假,非运算的结果为真,也就是1。
!(50)
50的结果是1,为真,非运算的结果为假,也就是0。输出逻辑运算的结果:
#includestdio.hintmain(){inta=0,b=10,c=-6;intresult_1=ab,result_2=c
0;printf("%d,%d\n",result_1,!c);printf("%d,%d\n",90,result_2);printf("%d,%d\n",b
,00);return0;}
运行结果:0,00,11,0
优先级逻辑运算符和其它运算符优先级从低到高依次为:
赋值运算符(=)和
关系运算符算术运算符非(!)
和
低于关系运算符,!高于算术运算符。按照运算符的优先顺序可以得出:
abcd等价于(ab)(cd)
!b==c
da等价于((!b)==c)
(da)
a+bcx+yb等价于((a+b)c)((x+y)b)
另外,逻辑表达式也可以嵌套使用,例如abb
9c,a
cd!p。
02:27