C语言中有三种逻辑运算符,“或”,“与”,“非”,对应C语言中的符号为“||”,“&&”,“ !”,而相比大家熟悉 if 语句和 while 语句的使用,这两种语句通常用关系表达式作为测试条件,有时会把多个关系表达式组合起来使用,这时候就需要用到逻辑运算符。典例如下
#include <stdio.h>
int main()
{
int a = 5;
int b = 20;
int c ; //非0就是真
if ( a && b )
{
printf("Line 1 - 条件为真\n" );
}
if ( a || b )
{
printf("Line 2 - 条件为真\n" );
}
/* 改变 a 和 b 的值 */
a = 0; //有0则假
b = 10;
if ( a && b )
{
printf("Line 3 - 条件为真\n" );
}
else
{
printf("Line 3 - 条件为假\n" );
}
if ( !(a && b) )
{
printf("Line 4 - 条件为真\n" );
}
}
运行结果如下:
Line 1 - 条件为真
Line 2 - 条件为真
Line 3 - 条件为假
Line 4 - 条件为真
下表为C语言支持的三种逻辑运算符,假设A为0,B为1,则结果如下:
也就是说,逻辑运算符&&,是要两个子表达式都为真,总表达式才为真,|| 运算符是两个都为假,才是假,而!运算符是取反,真变假,假变真。
再举一些例子,方便大家理解:
5 > 2 && 4 > 7为假,因为只有一个子表达式为真。
5 > 2 || 4 > 7为真,因为有一个子表达式为真。
!(4 > 7)为真,因为4 > 7为假,取反为真。
优先级:
!运算符的优先级很高,比乘法运算符还高,与递增运算符的优先级相同,只比圆括号的优先级低。&&运算符的优先级比 || 运算符高,但是两者的优先级都比关系运算符低,比赋值运算符高。因此,表达式 a > b && b > c || b > d相当于((a > b) && (b > c))|| (b > d)。推荐使用后者这种方式编写,因为便于理解