逻辑运算符
来源:互联网 发布:java 软引用 弱引用 编辑:程序博客网 时间:2024/06/04 01:29
逻辑运算符
逻辑运算符用来做表达式的逻辑判断,主要有逻辑与(&&),逻辑或(||)和逻辑非(!)三种逻辑运算,它们的特性如下所示:
逻辑与:&&运算符左右两边的表达式(或者多个表达式)运算结果都为真,逻辑与的运算结果就为真,否则结果就为假
逻辑或:||运算符左右两边的表达式(或者多个表达式)中有一个表达式的运算结果为真,逻辑或的运算结果就为真,否则就为假
逻辑非:用于表达式取反,真变成假,假变成真
优先级(从高到低):!->算术运算符->关系运算符->&&->||->赋值运算符
结合性:自左向右
逻辑与的应用案例如下所示:
三个科目的分数必须大于等于145分,才能被清华大学录取,只要有一门不满足,就不能录取
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>/*定义三个常量 三门成绩的录取分数*/#define 语文 145#define 数学 145#define 英语 145/*逻辑与运算符@author tony ittimeline@163.com@date 2017/11/28 12:32@website www.ittimeline.net*/void logic_and() { int chinese = 145; int math = 145; int english = 145; chinese >= 语文&&math >= 数学&&english >= 英语 ? printf("你被清华录取了\n"):system("echo 记录努力吧"); chinese = 140; //修改分数 printf("修改语文成绩为140分之后判断是否考取清华大学的结果为"); //只要有一个条件不满足,结果为假 chinese >= 语文&&math >= 数学&&english >= 英语 ? printf("你被清华录取了\n") : system("echo 记录努力吧"); system("pause");}
逻辑或的应用案例如下所示:
即使三科的成绩没有都大于等于145分,但是总分大于等于435,满足逻辑或,因此可以被录取
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>/*定义三个常量 三门成绩的录取分数*/#define 语文 145#define 数学 145#define 英语 145/*逻辑或运算符@author tony ittimeline@163.com@date 2017/11/28 12:32@website www.ittimeline.net*/void logic_or() { int chinese = 145; int math = 142; int english = 148; int total = chinese + math + english; (chinese >= 语文&&math >= 数学&&english >= 英语) ||(total>=435)? printf("你被清华录取了\n") : system("echo 记录努力吧");// system("pause");}
逻辑非的应用案例如下所示:
10>20的关系运算结果为0,但是加上逻辑非运算后结果变成了1
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>/*逻辑非运算符@author tony ittimeline@163.com@date 2017/11/28 12:32@website www.ittimeline.net*/void logic_not() { int num = 10; int val = 20; printf("10 >20 逻辑非的运算结果是%d\n",!(num>val)); system("pause");}
逻辑与和逻辑或在运算时还存在着短路特性:当明确整体的表达式的运算结果以后,余下的表达式将不会再执行,如下应用程序所示:
#include <stdio.h>#include <stdlib.h>/* 逻辑与和逻辑或的短路效应 @author tony ittimeline@163.com @date 2017/11/29 22:24 @website www.ittimeline.net*/void logic_short_circuit() { int num = 10; 0 && ++num; printf("逻辑与的短路特性 num = %d\n",num); //输出结果为num=10 ,因为&&左边的表达式结果为0,因此整个表达式的结果就是0,因此后面的++num不会再执行 1 || ++num; printf("逻辑或的短路特性 num = %d\n", num);//输出结果依然为num=10,因为||左边的表达式结果为非0,,因此整个表达式的结果就是非0,因此后面的++num不会再执行 system("pause");}
阅读全文