NOT)。注意:在C语言中不能在程序中直接用AND、OR、NOT作为逻辑运算符,而是用其他符号代替。C逻辑运算符及其含义如下:
“&&”和“||”是双目(元)运算符,它要求有两个运算对象(操作数);“!”是一目(元)运算符,只要求有一个运算对象。逻辑运算真值表:
按以下的优先次序:
(1)!(非)->&&(与)->||(或),即“!”为三者中最高的
(2)逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符。
4.4.2 逻辑表达式
逻辑表达式的值应该是一个逻辑量“真”或“假”。
实际上,逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是字符型、浮点型、枚举型或指针型的纯量型数据。(关于纯量型的讲解,在本人博客里C Language的第2章里有讲解)系统最终以0和非0来判定他们属于“真”或“假”。逻辑运算的真值表(用0和非0表示的另一种格式):
在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符;如
(1)a&&b&&c。只有a为真(非0)时,才需要判别b的值。只有当a和b都为真的情况下才需要判别c的值。如果a为假,就不必判断b和c的值(此时整个表达式已确定为假)。换个说法,就是a若为假,则b和c被短路了,不会被执行。
(2)a||b||c。只要a为真(非0)是,就不必判断b和c。只有a为假,才判别b。a和b都为假才判别c。
4.4.3 逻辑型变量
这是C99有所增加的一种数据类型。可将关系运算和逻辑运算的结果存到一个逻辑变量中,以便于分析和运算。定义逻辑变量用类型符_Bool.
float score;
scanf(“%f”,&score);
_Bool a ,b; //a和b被定义为逻辑型变量
a = score>=60; //将关系表达式score>=60的值赋给逻辑变量a
b = score<=69; //将关系表达式score<=60的值赋给逻辑变量b
if(a&&b) //如果a和b均为真,输出分数等级为C
printf(“The grade is C\n”);
如果在源文件中用#include指令包含了头文件stdbool.h,那么上面的程序段可以写成:
float score;
scanf(“%f”,&score);
bool a ,b; //a和b被定义为逻辑型变量
a = score>=60; //将关系表达式score>=60的值赋给逻辑变量a
b = score<=69; //将关系表达式score<=60的值赋给逻辑变量b
if(a&&b) //如果a和b均为真,输出分数等级为C
printf(“The grade is C\n”);
注意:在使用bool类型时,要先了解自己所用的编译系统能否允许使用逻辑型变量bool和true和