当前课程知识点:C语言程序设计 >  第5章 选择结构程序设计 >  5.2 逻辑运算符和逻辑表达式 >  逻辑运算符和逻辑表达式

返回《C语言程序设计》慕课在线视频课程列表

逻辑运算符和逻辑表达式在线视频

下一节:条件运算符和条件表达式

返回《C语言程序设计》慕课在线视频列表

逻辑运算符和逻辑表达式课程教案、知识点、字幕

同学们大家好

本节我们来学习C语言中的逻辑运算符

和逻辑表达式

有时要求判断的条件不是一个简单的条件

而是由几个给定简单条件组成的复合条件

例如

如果星期六不下雨

我们去郊游

这就是由两个简单条件组成的复合条件

需要判定两个条件

1

是否星期六

2

是否下雨

只有这两个条件都满足

才去郊游

这个组合条件是不能够用一个关系表达式来表示的

要用两个表达式的组合

在构造复杂条件时

就需要引入逻辑运算

C语言中提供了三种逻辑运算符

分别是逻辑非逻辑与和逻辑或

用逻辑运算符将关系表达式

或其他逻辑量连接起来的式子

就是逻辑表达式

注意

参与逻辑运算的值有两种

0和非0

以0代表假

以非0代表真

而逻辑运算的结果是一个逻辑量

用0代表假

用1代表真

逻辑运算符的运算规则如图所示

逻辑非

如果a为假

则!a为真

如果a为真

则!a为假

逻辑与

只有两个运算对象都为真时

结果才为真

其余皆为假

逻辑或

只有两个运算对象都为假时

结果才为假

其余皆为真

例如

已知a = 4b = 5则

!a || b 表达式的值为多少

a为4非0为真!a 为假

b为5非0为真

假 || 真

结果为 真

表达式的值为1

使用时需要注意以下三点

第一

逻辑非是单目运算符

结合方向为右结合

第二

逻辑与和逻辑或是双目运算符

结合方向为左结合

第三

逻辑非的优先级高于算术运算符

逻辑与和逻辑或的优先级

低于算术运算符和关系运算符

高于赋值运算符

同时

逻辑与的优先级又高于逻辑或

例如

a <= x && x <= b

等价于

(a <= x)&& (x <= b)

!a || a > b 等价于

(!a)|| (a > b)

c = a || b 等价于

c = (a || b)

思考题

已知a = 4,b = 5问

c = b > 3 && 2 || 8 < b - !a 的值是多少

回答正确

c 的值为1

在逻辑表达式求解过程中

并不是所有的逻辑运算符都会被执行到

要注意逻辑短路计算规则

例如

a && b && c 只在a为真时

才判别b的值

如果a为假

就不需要判别b的值

整个表达式的值一定为假

同理只在ab都为真时才判别 c的值

否则

就不需要判别c的值

整个表达式的值一定为假

例如

a || b || c 只在a为假时

才判别b的值

如果a为真

就不需要判别b的值

整个表达式的值一定为真

同理只在ab都为假时

才判别 c的值

否则

就不需要判别c的值

整个表达式的值一定为真

已知

a = 1,b = 2,c = 3,d = 4,m = 1,n = 1

(m = a > b)&& (n = c > d)

执行后m与n的值是多少

在逻辑表达式求解过程中

已知a为1b为2

a>b为假

0

m赋值为0

整个逻辑表达式的值已经确定为假

0

就不需要判别&&右侧表达式的值了

所以n值不变

m = 0

n = 1

思考题

下面我们来想想两个问题的判断条件该如何设计

问题1

已知三条边分别为abc

要满足构成一个三角形的条件该怎么书写呢

这是很简单的数学问题

只要满足三角形任意两边之和大于第三边

就可以构成一个三角形

因此

满足构成一个三角形的条件可以构造如下

a+b>c && a+c>b && b+c>a

问题2

判别用year表示的某一年是否闰年

条件该怎么书写呢

闰年的条件是符合下面二者之一

1

能被4整除

但不能被100整除

如2008

2

能被400整除

如2000

可以用一个逻辑表达式来表示

(year%4==0 && year %100=0)

||

(year%400 == 0)

year为整数年份

如果上述表达式值为真

值为1

则year为闰年

否则year为非闰年

要做到准确

高效地描述各种问题的判别条件

还需要同学们课后多多思考和练习

本节的内容就讲到这里

同学们再见

C语言程序设计课程列表:

第1章 C语言程序设计预备知识

-计算思维与计算机

--计算思维与计算机

--计算思维与计算机

--计算思维和计算机

第2章 C语言程序设计基础

-2.1 程序设计语言的发展及其特点和应用

--程序设计语言的发展及其特点和应用

--程序设计语言的特点及发展

- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤

-- C语言程序的基本结构及编制C语言程序的基本步骤

--C语言程序的结构和编制步骤

第3章 基本数据类型、运算符与表达式

-3.1 C语言的数据类型

--C语言的数据类型

--C语言的数据类型

-3.2 常量

--常量

--常量

-3.3 什么是变量

--什么是变量

--什么是变量

-3.4 如何进行算术运算

--如何进行算术运算

--如何进行算术运算

-3.5 赋值运算符和逗号运算符

--赋值运算符和逗号运算符

--赋值运算符和逗号运算符

-3.6 数据类型转换

--数据类型转换

--数据类型转换

第4章 基本输入输出和顺序程序设计

-4.1 格式化输出printf

--格式化输出printf

--格式化输出

-4.2 格式化输入scanf及字符数据的非格式化输入输出

--格式化输入scanf及字符数据的非格式化输入输出

--格式化输入

第5章 选择结构程序设计

-5.1 关系运算符和关系表达式

--关系运算符和关系表达式

--关系运算符和关系表达式

-5.2 逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

-5.3 条件运算符和条件表达式

--条件运算符和条件表达式

--条件运算符和条件表达式

-5.4 if语句

--if语句

--if语句

-5.5 switch语句

--switch语句

--switch语句

第6章 循环结构程序设计

-6.1 while语句

--while语句

--while语句

--do-while语句

-6.2 for语句

--for语句

--for语句

-6.3 循环的嵌套

--循环的嵌套

--循环的嵌套

-6.4 break语句和continue语句

--break语句和continue语句

--break和continue语句

第7章 数组

-7.1 一维数组的定义和引用

--一维数组的定义和引用

--一维数组的定义和引用

-7.2 一维数组的赋值

--一维数组的赋值

--一维数组的赋值

-7.3 二维数组的定义和引用

--二维数组的定义和引用

--二维数组的定义和引用

-7.4 二维数组的赋值

--二维数组的赋值

--二维数组的赋值

-7.5 字符串的本质

--字符串的本质

--字符串的本质

-7.6 字符串操作的常用函数

--字符串操作的常用函数

--字符串常用函数

-7.7 字符串数组

--字符串数组

--字符串数组

第8章 函数

-8.1 函数概述

--函数概述

--函数概述

-8.2 有参函数

--有参函数

--有参函数

-8.3 函数参数的传递方式

--函数参数的传递形式

--函数参数的传递方式

-8.4 变量的作用域和生存期

--变量的作用域和生存期

--变量的作用域和生存期

-8.5 变量的存储类型

--变量的存储类型

--变量的存储类型

-8.6 函数的嵌套和递归调用

--函数的嵌套和递归调用

--函数的嵌套和递归调用

-8.7 函数的作用域与封装

--函数的作用域与封装

--函数的作用域与封装

第9章 指针

-9.1 指针变量的概念(上)

--指针变量的概念(上)

--指针变量的概念(上)

-9.2 指针变量的概念(下)

--指针变量的概念(下)

--指针变量的概念(下)

-9.3 指向一维数组的指针变量

--指向一维数组的指针变量

--指向一维数组的指针变量

-9.4 指向二维数组的指针变量(上)

--指向二维数组的指针变量

--指向二维数组的指针变量(上)

-9.5 指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

-9.6 动态内存分配

--动态内存分配

--动态内存分配

第10章 预处理命令

-10.1 编译预处理

--编译预处理

第11章 复杂数据类型

-11.1 用户自己建立数据类型

--用户自己建立数据类型

--用户自己建立数据类型

-11.2 定义结构体类型变量

--定义结构体类型变量

--定义结构体类型变量

-11.3 结构体变量的引用与初始化

--结构体变量的引用与初始化

-11.4 结构体数组

--结构体数组

--结构体数组

-11.5 指向结构体类型数据的指针

--指向结构体类型数据的指针

--指向结构体类型数据的指针

第12章 文件

-12.1 文件的基本概念和文件指针

--文件的基本概念和文件指针

--文件的基本概念和文件指针

-12,2 文件的打开和关闭

--文件的打开和关闭

--文件的打开和关闭

-12.3 文本文件读写

--文本文件读写

--文本文件读写

-12.4 二进制文件读写

--二进制文件读写

--二进制文件读写

逻辑运算符和逻辑表达式笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。