C语言程序设计-关系运算符和关系表达式、逻辑运算符和逻辑表达式
目录
第三章 分支结构程序设计
3.1 关系运算符和关系表达式
3.1.1 关系运算符
3.1.2 关系表达式
3.2 逻辑运算符和逻辑表达式
3.2.1 逻辑运算符
3.2.2 逻辑表达式
传送门-上一章习题:C语言-基础知识练习习题2
传送门-上一节:C语言程序设计-顺序结构、分支语句、循环结构、赋值语句、格式输入输出函数(scanf、printf)、字符输入输出函数(getchar、putchar)
传送门-下一节:C语言程序设计-分支语句:if语句及嵌套(if-else)、switch语句
第三章 分支结构程序设计
3.1 关系运算符和关系表达式
3.1.1 关系运算符
C语言中提供的关系运算符共有6种,如表3.1所示。
表3.1 关系运算符
关系运算符>、>=、<、<=的优先级高于==、!=,结合方向是自左至右。关系运算符隐含“是否”的含义,例如,“x>0”隐含x的值是否大于0。
3.1.2 关系表达式
用关系表达式把两个C语言表达式连接起来的表达式称为关系表达式。x>0和x==0都是关系表达式。关系表达式的判断结果只有两种可能:“真”和“假”。当关系成立时结果为“真”,否则结果为“假”。
【例3.1】假设表3.2中a、b、x为整型变量,y为单精度型变量,请观察输出结果。
表3.2 关系表达式的举例
说明:
1)当关系表达式的判断结果为“真”时,关系表达式的值为1,当判断结果为“假”时,关系表达式的值为0,即关系表达式的值只能是整数0或1.关系表达式能参加数值计算,例如,表达式(5>3)+7的值为8(即1+7)。
2)关系运算符的结合方向为自左至右。计算表达式0<=x<=2的值时,先计算表达式0<=x的值,不管x取什么值,表达式0<=x的值只能是0或1,表达式0<=x<=2相当于0<=2或1<=2,且这两个表达式的值都是1,因此表达式0<=x<=2的值永远是1,这说明表达式0<=x<=2不能代表x的取值范围0x2,那么,应该如何表示这范围呢?将在3.2节的学习中得到答案。
3)存放在内存中的实型数总是有误差。当把45.3219存放在单精度型变量y中时,y的实际值就会变为45.3219*(*代表若干个不确定的数字),关系表达式y==45.3219总为假,也就是其值永远为0,与预期结果不相符,所以应当避免使用判断“实型数==实型数”这样的关系表达式,可以采用y-45.3219<等形式代替y==45.3219。
3.2 逻辑运算符和逻辑表达式
3.2.1 逻辑运算符
C语言中提供的逻辑运算符共有3种,如表3.3所示。
表3.3 逻辑运算符
注意:逻辑运算符的逻辑量(即运算量)可以是任意一个合法的表达式(可以是常量或变量)。运算符&&和||的结合方向是自左至右,而!的结合方向是自右至左。要输入运算符||,只要输入两次反斜杠(\)的上档键即可。
3.2.2 逻辑表达式
逻辑表达式由逻辑运算符连接C语言表达式而构成的表达式,如x>=0&&x<=2、x<-5||x>5等都是逻辑表达式,逻辑表达式的结果只有“真”“假”两种情况。
【例3.2】编写一个含有逻辑表达式的程序。
#include<stdio.h>
int main()
{int x = 1;printf("%d ", x >= 0 && x <= 2); //x满足0<=x<=2,输出1x = 5;printf("%d ", x >= 0 && x <= 2); //x不满足0<=x<=2,输出0printf("%d ", x < -3 || x>3); //x不满足x<-3但满足x>3,输出1x = 0;printf("%d ", x < -3 || x>3); //x不满足x<-3也不满足x>3,输出0printf("%d ", !x); //x的值为0,输出1x = 5;printf("%d ", !x); //x的值为非0,输出0printf("%d ", 3 && 'A'); //两个运算量为非0数,输出1printf("%d ", (x = 2) || 0); //第1个运算量为非0数,输出1printf("x=%d\n", x);return 0;
}
运行结果:
1 0 1 0 1 0 1 1 x=2
程序说明:
1)在C语言中,任何一个非零值都表示“真”,零表示“假”。例如:’A‘、5>=0和x=2都表示“真”,因为3项的值分别为65、1、2(均非零)。
2)由程序的运行结果可以看出,逻辑表达式的值也只能是1或0.当逻辑表达式的结果为“真”时值为1,为“假”时值为0。
逻辑运算符的规则如表3.4所示,表中a和b代表运算量,它们可以是任意表达式。
表3.4 逻辑运算的规则
【例3.3】编写一个含有特殊逻辑表达式的程序。
#include<stdio.h>
int main()
{int a = 1, b = 0;printf("%d ", 0 && (a = 2)); //0为"假",不执行a=2printf("a=%d ", a); //a的值仍为1printf("%d ", 5 && (a = 2)); //5是非0数,"真",要执行a=2printf("a=%d ", a); //a的值为2b = 1;printf("%d ", 5 || (b = 2)); //5是非0数,"真",不执行b=2printf("b=%d ", b); //b的值仍为1printf("%d ", 0 || (b = 2)); //0为"假",要执行b=2printf("b=%d\n", b); //b的值为2return 0;
}
运行结果:
0 a=1 1 a=2 1 b=1 1 b=2
程序说明:
程序中可以看到,表达式a=2和b=2有时不被处理。在逻辑表达式的求解过程中,并不是所有的表达式都被运算。例如,进行“逻辑与”运算时,如果第一个表达式为“假”,系统就不再对第二个表达式做运算,因此此时已经可以确定逻辑表达式的值为0;进行“逻辑或”运算时,如果第一个运算量为“真”,系统也不再对第二个运算量做运算,因此此时已经可以确定逻辑表达式的值为1.
算术运算符、赋值运算符、关系运算符、逻辑运算符参加运算的先后顺序是:
逻辑非运算符-->算术运算符-->关系运算符-->逻辑与运算符-->逻辑或运算符-->赋值运算符。
传送门
C语言程序设计-关系运算符和关系表达式、逻辑运算符和逻辑表达式相关推荐
- C语言基础入门48篇_13_关系运算符与关系表达式(等于(==)、不等于(叹=)、大于(>)、小于(<)、小于等于(<=)、大于等于(>=),5==nValue方式避免bug,==不可比较浮点型数据)
C语言中的关系运算符有等于(==).不等于(!=).大于(>).小于(<).小于等于(<=).大于等于(>=).他们可以直接用于整型.浮点基本数据类型及指针类型变量的比较. 1 ...
- c语言关系运算符和关系表达式,C语言关系运算符和关系表达式表达式.ppt
<C语言关系运算符和关系表达式表达式.ppt>由会员分享,可在线阅读,更多相关<C语言关系运算符和关系表达式表达式.ppt(6页珍藏版)>请在装配图网上搜索. 1.2.2 关系 ...
- C语言 关系运算符与关系表达式
知识补丁01:关系运算符及其优先次序 少侠,接招吧! [接招看题025-01] 说明关系运算符的优先级低于算术运算符,但高于赋值运算符.并比较关系运算符的优先级. 帮你节约时间的源代码: main() ...
- C语言程序设计基本运算符,C语言程序设计2第4章基本运算符和表达式.ppt
第4章 基本运算符和表达式 4.1 运算符的种类 4.2 算术运算符 4.3 自增自减运算符 4.4 表达式 4.5 逻辑运算 4.6 条件运算符和条件表达式 退出 4.1 运算符的种类 1. 算术运 ...
- C++关系运算符和关系表达式
关系运算符即比较符. 用关系运算符将两个表达式连接起来就是关系表达式.关系表达式是一种最简单的逻辑表达式. 关系表达式一般用于判断是否符合某一条件.关系表达式的结果类型为bool,值只能是true或f ...
- C语言程序设计-算数运算符、赋值运算符、逗号运算符及表达式
目录 1.5 运算符和表达式 1.5.1 算术运算符和表达式 1.5.2 赋值运算符和表达式 1.5.3 逗号运算符和表达式 传送门上一节:C语言程序设计-常量与变量 传送门下一节:C语言程序设计-不 ...
- C语言:算术运算符、关系运算符与逻辑运算符
目录 一.算术运算符 二.关系运算符 三.逻辑运算符 一.算术运算符 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int main( ...
- java中关系运算符_Java关系运算符
Java关系运算符 java里的关系运算符有这么几种:大于(>).小于(=).小于等于(<=),他们运算的结果是个boolean值,关系式成立为true,不成立为false. 运算符分类 ...
- 算数运算符与关系运算符_JavaScript关系运算符
关系运算符表 我们来看一下,关系运算符中不同数据类型之间的比较,该如何去比较 1.如果是数值之间比较, 那么就看数值的大小来判断是true或false 输出结果为true 2.如果两个操作数都是字符串 ...
最新文章
- 绝对精度与相对精度概念
- js如何去除多个cookie?
- 写给初学者的Tensorflow介绍
- [密码学] 公钥密码基础与RSA
- lr中winsock协议的脚本(转载51testing)
- Flex builder3与eclipse整合 转载
- C#如何无客户端连接Oracle数据库
- shell实战之日志脱敏
- 自己的工作计划-备忘
- 让你的U盘变光驱,制作USB-CDROM,用U盘安装系统
- 基于C语言图书馆管理系统编程设计
- 数字通信的调制方式 ASK FSK PSK QAM
- echart 表格_市政工程表格不会填?市政工程1000个表格模板,一键即可套用
- 8个优秀的CSS实践,再不刷题就晚了!
- 视频教程-2020年软考网络工程师基础知识历年真题详解软考视频教程-软考
- 做word计算机海报图片,使用word制作宣传海报
- html css样式没有效果图,5个Blockquote的css样式
- UPC 黑熊过河(基本状态转移)
- usb Android gentoo,gentoo usb 鼠标
- 京东注册页开发 HTML5 1014