1、逻辑运算符
逻辑运算符一般用来对运算对象进行逻辑操作,逻辑运算符有以下三种:&&(逻辑与)、||(逻辑或)和!(逻辑非)。
1.2逻辑运算符的优先次序:!(逻辑非)大于 &&(逻辑与)大于 || (逻辑或) 换句话来说,!(非)最大,&&(与)次之,||(或)最小
1.3逻辑非“!”的优先级高于算术运算符,逻辑与“&&”和逻辑或“||”的优先级低于算术运算符和关系运算符,高于赋值运算符。因此在c>=’a’&&c<=’z’中,要先进行c>=’a’和c<=’z’的关系运算,再进行逻辑运算。
1.4逻辑运算符中逻辑非“!”的结合方向是由右向左,逻辑“&&”和逻辑或“||”的结合方向是由左向右。
2、逻辑表达式
逻辑表达式的一般形式为:
表达式 逻辑运算符 表达式
表达式运算结果有“真”和“假”两种,C语言中用 “1” 表示“真” ,用“0”表示“假”
逻辑运算的真假值表
a | b | !a | !b | a&&b | a||b |
真 | 真 | 假 | 假 | 真 | 真 |
真 | 假 | 假 | 真 | 假 | 真 |
假 | 真 | 真 | 假 | 假 | 真 |
假 | 假 | 真 | 真 | 假 | 假 |
咱具体举个例:int a=3,b=4;
!a:由于a非零,为真,!a为假,值为0。反之!b一样
a&&b:由于a和b 均非零,均为真,故逻辑与的结果为真,值为1。如果(b<a)则为假,值为0。
a||b:由于a和b均非零,均为真,故逻辑或的结果为真,值为1。
!a||b&&2:由于逻辑运算符的优先次序,所以先进行!a b&&2 的关系运算,再与逻辑与运算。即:(!a)||(b&&2),即0||1为真,值为1。
敲代码试试:
#include"stdio.h" /*编译预处理命令*/
int main() /*main函数*/
{
int x=3,y=4; /*定义整型变量*/
printf("x=%d,y=%d\n",x,y); /*输出判断值*/
printf("x<=5&&x>-5%d\n",x<=5&&x>=-5);
printf("x<y||x+y==8%d\n,x<y||x+y==8"); /*输出判断值*/
}
3、逻辑表达式的短路现象
在C语言逻辑表达式中,有时会出现计算完&&或||左侧的表达式,就不用再计算右侧的表达式的情况,这种情况被称为逻辑表达式的短路现象。
#include"stdio.h"
void main()
{
int a,b;
x=254 ,y=345;
if(x==14 &&(y+=1))
printf("y进行运算后为%d\n",y);
else
printf("y进行运算后为%d\n",y);
}
在符合逻辑判断if(x==14 &&(y+=1))中,左边表达式为假(0),则右侧表达式&&(y+=1)则不再进行计算,整个表达式if语句必然为假。同理,若&&左边的表达式为真(1)则右侧表达式将不再计算。