将多个关系表达式组合在一起变成一个复合条件,组和过程就会用到逻辑运算符。
用逻辑运算符将关系表达式或其他逻辑量连起来的式子就是逻辑表达式。
一.逻辑运算符及其优先次序
1.有三种逻辑运算符:AND,OR,NOT。C语言中要用&&代替AND,||代替OR,!代替逻辑非。
&&和||为双目运算符,要求有两个运算对象,如(a>b)&&(x>y),(a>b)||(x>y);
!为单目运算符,只要求有一个运算对象,如!(a>b)。
2.优先次序:!>&&,||
!(非)>算数运算符>关系运算符>&&和||>赋值运算符
二.逻辑表达式
逻辑表达式的值应该是一个逻辑量“真”或“假”,C语言表示逻辑运算结果时“1”表示真,“0”表示假,但在判断一个量是否为真时,以0代表“假”,以非0代表“真”,即将一个非零的数值认为“真”。
eg:(1)若a=4,则!a的值为0,因为a的值为非0,被认作“真”,对它进行“非运算”,得“假”,“假”以0代表。
(2)若a=4,B=5则a&&b的值为1,因为a和b均为非0,被认为是“真”,因此 a&&b的值也为“真”,值为1。
(3) a和b的值分别为4和5,a||b的值为1。
(4) a和b值分别为4和5,!a||b的值为1。
(5)4&&0||2的值为1。
由系统给出的逻辑运算结果不是1就是0,而在逻辑表达式中作为参加逻辑运算的运算对象可以是0(“假”)或任何非0的数值(按“真”对待),甚至可以是字符型,浮点型,枚举型或指针型的纯量型数据。eg:'c'&&'d'的值为1(因为‘c’和‘d’的ASCII值都不为0,按“真”处理),所以1&&1值为1。
对于一个表达式中不同位置上的数值,应区分哪些做数值运算,哪些做关系运算,哪些做逻辑运算。
在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。eg:1.a&&b&&c,a和b均为真才需要判断c的值;若a为假,整个表达式即为假,不必判断b和c。