目录

第三章 分支结构程序设计

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语言程序设计-关系运算符和关系表达式、逻辑运算符和逻辑表达式相关推荐

  1. C语言基础入门48篇_13_关系运算符与关系表达式(等于(==)、不等于(叹=)、大于(>)、小于(<)、小于等于(<=)、大于等于(>=),5==nValue方式避免bug,==不可比较浮点型数据)

    C语言中的关系运算符有等于(==).不等于(!=).大于(>).小于(<).小于等于(<=).大于等于(>=).他们可以直接用于整型.浮点基本数据类型及指针类型变量的比较. 1 ...

  2. c语言关系运算符和关系表达式,C语言关系运算符和关系表达式表达式.ppt

    <C语言关系运算符和关系表达式表达式.ppt>由会员分享,可在线阅读,更多相关<C语言关系运算符和关系表达式表达式.ppt(6页珍藏版)>请在装配图网上搜索. 1.2.2 关系 ...

  3. C语言 关系运算符与关系表达式

    知识补丁01:关系运算符及其优先次序 少侠,接招吧! [接招看题025-01] 说明关系运算符的优先级低于算术运算符,但高于赋值运算符.并比较关系运算符的优先级. 帮你节约时间的源代码: main() ...

  4. C语言程序设计基本运算符,C语言程序设计2第4章基本运算符和表达式.ppt

    第4章 基本运算符和表达式 4.1 运算符的种类 4.2 算术运算符 4.3 自增自减运算符 4.4 表达式 4.5 逻辑运算 4.6 条件运算符和条件表达式 退出 4.1 运算符的种类 1. 算术运 ...

  5. C++关系运算符和关系表达式

    关系运算符即比较符. 用关系运算符将两个表达式连接起来就是关系表达式.关系表达式是一种最简单的逻辑表达式. 关系表达式一般用于判断是否符合某一条件.关系表达式的结果类型为bool,值只能是true或f ...

  6. C语言程序设计-算数运算符、赋值运算符、逗号运算符及表达式

    目录 1.5 运算符和表达式 1.5.1 算术运算符和表达式 1.5.2 赋值运算符和表达式 1.5.3 逗号运算符和表达式 传送门上一节:C语言程序设计-常量与变量 传送门下一节:C语言程序设计-不 ...

  7. C语言:算术运算符、关系运算符与逻辑运算符

    目录 一.算术运算符 二.关系运算符 三.逻辑运算符 一.算术运算符 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int main( ...

  8. java中关系运算符_Java关系运算符

    Java关系运算符 java里的关系运算符有这么几种:大于(>).小于(=).小于等于(<=),他们运算的结果是个boolean值,关系式成立为true,不成立为false. 运算符分类 ...

  9. 算数运算符与关系运算符_JavaScript关系运算符

    关系运算符表 我们来看一下,关系运算符中不同数据类型之间的比较,该如何去比较 1.如果是数值之间比较, 那么就看数值的大小来判断是true或false 输出结果为true 2.如果两个操作数都是字符串 ...

最新文章

  1. 绝对精度与相对精度概念
  2. js如何去除多个cookie?
  3. 写给初学者的Tensorflow介绍
  4. [密码学] 公钥密码基础与RSA
  5. lr中winsock协议的脚本(转载51testing)
  6. Flex builder3与eclipse整合 转载
  7. C#如何无客户端连接Oracle数据库
  8. shell实战之日志脱敏
  9. 自己的工作计划-备忘
  10. 让你的U盘变光驱,制作USB-CDROM,用U盘安装系统
  11. 基于C语言图书馆管理系统编程设计
  12. 数字通信的调制方式 ASK FSK PSK QAM
  13. echart 表格_市政工程表格不会填?市政工程1000个表格模板,一键即可套用
  14. 8个优秀的CSS实践,再不刷题就晚了!
  15. 视频教程-2020年软考网络工程师基础知识历年真题详解软考视频教程-软考
  16. 做word计算机海报图片,使用word制作宣传海报
  17. html css样式没有效果图,5个Blockquote的css样式
  18. UPC 黑熊过河(基本状态转移)
  19. usb Android gentoo,gentoo usb 鼠标
  20. 京东注册页开发 HTML5 1014

热门文章

  1. 智能优化及其应用——课程设计(粒子群算法)
  2. 盗墓笔记《云顶天宫》好不好看?当贝投影F3画面还原度如何?
  3. conda安装与使用--ubuntu20.04
  4. CogColorExtractorTool工具功能
  5. jboss下ejb简介
  6. Wap Push 源码
  7. HDU4685:Prince and Princess(二分图匹配+tarjan)
  8. ubuntu两台电脑互传文件
  9. Excl2016密码忘记 破解办法
  10. 【什么是 Nodejs ?】