逻辑运算符用于连接两个条件表达式或布尔类型的变量,用于执行多个判断。在数学中,表示一个数值的范围时,经常用不等式来表述。例如:假设一个数值取值范围为0到100,设该数值为x,不等式0<x<100给出了x的取值范围,在Java程序语言中,逻辑运算符可以实现类似数学中的不等式。下表列出了C语言支持的逻辑运算符,表中假设整型变量A为真(数值为1),整型变量B为假(数值为0)。
表 1 逻辑运算符
|
运算符 |
描述 |
例子 |
|
&& |
称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真 |
(A && B)为假
|
|
|| |
称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真 |
(A || B)为真 |
|
! |
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false |
!(A && B)为真 |
逻辑与运算符“&&”,用于判断运算符两边的条件表达式或布尔变量是否同为真,如果同为真,返回结果为1(真),否则返回0(假)。例如下面语句:
int a = 10;
int b = 20;
int c = 15;
int bJudge = c > a && c < b;
声明了变量a、变量b、变量c,变量a和变量分别赋值为10和20,变量c赋值为15。第四条语句逻辑与运算符“&&”连接了2个条件表达式,分别是c > a和c < b,如果这两个表达式计算结果都为真,则bJudge为1(真),否则bJudge为0(假)。此时bJudge的值为1(真)。该运算符还有一个特点,当左侧的条件表达式或变量为0(假)时,则直接返回结果1(假),不再执行运算符右侧的表达式。
逻辑或运算符“||”,用于判断运算符两边的条件表达式或整型变量是否有一个为真,如果有一个为真,返回结果为1(真),否则返回0(假)。例如下面语句:
int a = 10;
int b = 20;
int c = 15;
int bJudge = c > a || c < b;
声明了变量a、变量b、变量c,变量a和变量分别赋值为10和20,变量c赋值为15。第四条语句逻辑或运算符“||”连接了2个条件表达式,分别是c > a和c < b,这两个表达式计算结果任何一个为1(真)时,则bJudge为真,否则bJudge为0(假)。此时bJudge的值为1(真)。
逻辑非运算符“!”,用于判断运算符两边的条件表达式或整型变量是否有一个为1(真),如果有一个为1(真),返回结果为1(真),否则返回0(假)。例如下面语句:
int a = 10;
int b = 20;
int bJudge = !( a> b);
声明了变量a、变量b,变量a和变量分别赋值为10和20。第三条语句逻辑非运算符“!”用于取反条件表达式a> b的结果,如果a> b为1(真),取反后为0(假),如果a> b为0(假),取反后为1(真)。此时bJudge的值为1(真)。语句中用括号把a> b括起来,用于提高a> b的优先级,先计算a> b,再取反。
例【1】逻辑运算符练习
程序清单 sample.c
#include <stdio.h>
int main()
{
//声明变量a、b、c、bJudge
int a = 10,b = 20,c = 15,bJudge;
// 执行逻辑与判断
bJudge = c > a && c < b;
printf("c(15) > a(10) && c(15) < b(20)的结果:bJudge =%d\n",bJudge);
//执行逻辑或判断
bJudge = c > a || c < b;
printf("c(15) > a(10) || c(15) < b(20)的结果:bJudge =%d\n",bJudge);
//执行逻辑非
bJudge = !( a> b);
printf("!( a(10)> b(20))的结果:bJudge =%d\n",bJudge);
}