当前课程知识点:C++语言程序设计基础 >  第2章 C++简单程序设计(一) >  运算与表达式 >  逗号运算、关系运算、逻辑运算和条件运算

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

逗号运算、关系运算、逻辑运算和条件运算在线视频

逗号运算、关系运算、逻辑运算和条件运算

逗号运算、关系运算、逻辑运算和条件运算

逗号运算和逗号表达式

l  格式

表达式1,表达式2

l  求解顺序及结果

n  先求解表达式1,再求解表达式2

n  最终结果为表达式2的值

l  

a = 3 * 5 , a * 4   最终结果为60

关系运算与关系表达式

l 关系运算是比较简单的一种逻辑运算,优先次序为:

8.png

l  关系表达式是一种最简单的逻辑表达式

n  其结果类型为 bool,值只能为 true 或false。

例如:a > bc <= a + bx + y == 3

逻辑运算与逻辑表达式

l  逻辑运算符

                 !()      &&()        ||()

优先次序:                      

l  逻辑运算结果类型:bool,值只能为 true 或false

l  逻辑表达式

例如:(a > b) && (x > y)

l  “&&”的运算规则

n   两侧表达式都为真,结果为真;

n  有一侧表达式为假,结果为假。

l  “&&” 的“短路特性”

表达式1 && 表达式2

n  先求解表达式1

n  若表达式1的值为false,则最终结果为false,不再求解表达式2

若表达式1的结果为true,则求解表达式2,以表达式2的结果作为最终结果

l  “||”的运算规则

n  两侧表达式都为假,结果为假;

n  有一侧表达式为真,结果为真。

l  “||” 的“短路特性”

表达式1 || 表达式2

n  先求解表达式1

n  若表达式1的值为true,则最终结果为true,不再求解表达式2

若表达式1的结果为false,则求解表达式2,以表达式2的结果作为最终结果

条件运算符与条件表达式

l  一般形式

n   表达式1?表达式2:表达式3

表达式必须是bool 类型

l  执行顺序

n  先求解表达式1,

n  若表达式1的值为true,则求解表达式2,表达式2的值为最终结果

若表达式1的值为false,则求解表达式3,表达式3的值为最终结果

l  条件运算符优先级高于赋值运算符,低于逻辑运算符

n  

9.png

表达式1bool类型,表达式23的类型可以不同,条件表达式的最终类型为中较高的类型。

下一节:Sizeof运算、位运算

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

逗号运算、关系运算、逻辑运算和条件运算课程教案、知识点、字幕

大家好

欢迎继续学习C++语言程序设计

这一节我给大家介绍几个

比较有趣的运算符

逗号运算符 关系运算符

逻辑运算符和条件运算符

那么逗号在C++中

也可以作为一个运算符的

它的作用

就是连接左右两个表达式

也就是先计算逗号运算符

左边的表达式

再计算逗号运算符右边的表达式

两个表达式都计算完了以后

以右边那个表达式

为最终表达式的结果

它的作用是什么呢

以后我们会在例子中看到

就像我们平常说话

一个比较长的句子

那么中间断一下

用个逗号 差不多的作用

那么关系运算符呢

是用来比较两个表达式

它们的大小相等

和不相等的关系的

那么逻辑运算符呢

是进行逻辑与 逻辑或

逻辑非运算的

还有条件表达式

条件表达式在C++中

可以用来实现一个

非常简单的选择结构

可以先问一下第一个表达式

是否为真呢

如果它为真 好

选择后面第二个表达式作为结果

如果为假

可以选择第三个表达式

作为最终的结果

这样用一个表达式就可以实现

我们后面要讲的

那种选择型结构了

所以今天这一节要给大家介绍的

这几个运算符

是非常有意思 也非常特殊的

下面我给大家详细介绍

这几个运算符的语法

现在我们来看一下逗号运算

它的语法形式是什么样的

这里我们看到

可以用逗号将两个表达式

连接起来

它的执行次序呢

是先求解表达式1

然后再求解表达式2

那么它整个算作一个表达式

这个表达式的最终结果

就是表达式2的值

比如我们看到这样一个例子

这里第一个表达式

它是3×5将值赋值给a

所以这是一个赋值表达式

赋值运算符的优先级

比逗号运算符的优先级要高

所以这是一个逗号

运算符连接起来的两个表达式

那么a得到了15个值以后呢

又去计算a×4

那么得到的结果是60

这个60就是整个逗号运算

表达式的结果

现在我们来看关系运算

与关系表达式

关系运算是用来比较

两个表达式它的大小

相等与不等关系的

我们看这里列出来的关系运算符

跟大家在数学中

熟悉的这个运算符是类似的

但是它的含义是不一样的

在数学中

我们写一个不等式的时候

表示是陈述这种不等关系

在程序中出现关系运算符的时候

表示需要进行比较运算

那么这里有小于 小于或等于

大于 大于或等于

还有等于 不等于

这样几个关系运算符

那么前面四个呢优先级相同

它们的优先级比较高

后两个等于和不等于

它们两个的优先级是相同的

而优先级相对比较低

实际上关系表达式呢

是一种最简单的逻辑表达式

它的结果值只能是为布尔类型的

是真或者是假

比如说我们看

这个几个关系表达式

这儿a大于b

那么它的值到底是真还是假呢

a大于b 它的值到底是真还是假

取决于在此之前

给a赋的值是什么

给b赋的值是什么

所以这要进行比较计算的

比如说如果a是1 b是2

那么a大于b 它的结果就是假

如果a是5 b是4

那么a大于b 它的结果就是真

所以像这几个表达式 a大于b

还有c小于等于a+b

还有x+y等于3

都是表示它们要进行比较运算

根据比较运算符

两侧表达式的值

得出最后比较的结果是真还是假

在C++中呢 还有逻辑运算符

仅仅只有简单的关系比较

是不足以表示复杂的逻辑关系的

比如说我们先看这个例子

可能你需要判断一下

是否a大于b 并且x大于y

那这样你简单只用关系运算符

就不够了

这个时候我们还有一个并且关系

要在程序中表示

那这样就要用与运算符

逻辑“与”

所以逻辑运算符呢

包括非与或三个

非的优先级最高 其次是与

优先级最低的是或

逻辑运算符它的运算结果

也是布尔类型的

只能为真 或者为假

那么这个逻辑与呢

它是具有短路特性的

短路特性是什么意思呢

我们首先要知道

逻辑与它的运算规则是什么

逻辑与的运算规则是

当两边的表达式都为真的时候

它才最终的结果是真

如果与运算符两边的表达式

有任意一个是假

那整个结果肯定是假

所以这个短路特性就是说

首先判断左边的表达式

如果说左边的表达式已经是假了

那右边的表达式就不用计算了

直接得出结论

这个与运算的结果为假

或运算呢也有类似的特性

首先它要计算左边的表达式

如果左边的表达式为真

整个表达式都为真了

为什么呢

因为或运算它的运算规则是

运算符两端的表达式如果都为假

那么结果才为假

在或运算两侧的表达式

只要有一个为真

最终的结果就是真

所以它会先计算

或运算左边的表达式

如果发现已经是真

那右边的表达式就不会再计算了

直接得出结论真

所以由于这样短路特性

当我们作与或者或运算的时候

第二个表达式

也就是运算符右边的表达式

很有可能是不计算的

在C++中

还有一个非常有意思的表达式

叫做条件表达式

条件表达式呢

它其中有三个部分

我们来看一下它的语法

第一个部分表达式1

后面有个问号

那么表达式1必须是布尔类型的

也就是它只能取值为真或者是假

第二个表达式后面有个冒号

然后是第三个表达式

它运算的时候的求解次序呢

是先求解表达式1

如果表达式1的值为真

那么就继续求解表达式2

以表达式2的结果

为整个表达式的结果

如果表达式1的结果为假

那么就越过表达式2不求解了

直接就求解表达式3

以表达式3的结果

为整个表达式的结果

我们来看这样一个例子

第一个表达式是a大于b 问号

那么也就是判断一下

a大于b是否成立

它的结果为真还是为假

如果a大于b的结果是真

那么就计算第二个表达式a

因a的值

作为整个条件运算的结果

赋值给x

如果a大于b的结果是假

那么就计算第三个表达式

也就是b

将b的值

作为整个条件运算的结果

赋值给x

那么大家看看

这个是不是起到了

一个简单的选择结构的作用呢

先判断a和b谁比较大

然后把两者比较大的那个选出来

赋给x

在后续我们要学习依附语句

学了依附语句以后

大家就会发现

实际上这个条件运算符

和条件表达式

就解决了一个最简单的选择结构

也就是把最简单的依附语句

这样简化了

这是C++语言的特色语句之一

那么大家使用

这个条件运算符的时候呢

要注意这个运算优先级

条件运算符优先级

高于赋值运算符

低于逻辑运算符

那么在这里面会有三个表达式

那么第一个表达式

必须是布尔类型的

表达式2和表达式3

类型可以是不同的

那么这个条件表达式

最终的类型是什么呢

不管这个条件表达式最终的取值是第二个表达式的值

还是第三个表达式的值

那么它最终的类型

都是表达式2

和表达式3中较高的类型

C++语言程序设计基础课程列表:

第1章 绪论

-导学

--第1章导学

-计算机系统简介

--计算机系统简介

--计算机系统简介 测试题

-计算机语言和程序设计方法的发展

--计算机语言和程序设计方法的发展

--计算机语言和程序设计方法的发展 测试题

-面向对象的基本概念

--面向对象的基本概念

--面向对象的基本概念 测试题

-程序的开发过程

--程序的开发过程

--程序的开发过程 测试题

-信息的表示和储存

--计算机中的信息与存储单位

--计算机的数字系统

--数据的编码表示

--信息的表示和储存 测试题

-实验指导

--实验一:VS开发环境介绍

第2章 C++简单程序设计(一)

-导学

--第二章导学

-C++语言概述

--C++的特点和程序实例

--C++字符集和词法记号

--C++语言概述 测试题

-基本数据类型、常量、变量

--基本数据类型、常量、变量

--程序举例

--基本数据类型、常量、变量 测试题

-运算与表达式

--算术运算与赋值运算

--逗号运算、关系运算、逻辑运算和条件运算

--Sizeof运算、位运算

--运算优先级、类型转换

--运算与表达式 测试题

-实验二:简单程序设计(上)

--实验二:简单程序设计(上)

第2章 C++简单程序设计(二)

-数据的输入和输出

--数据的输入和输出

--数据的输入和输出 测试题

-选择结构

--if语句

--switch语句

--选择结构 测试题

-循环结构

--循环结构——while语句

--do-while语句

--for语句

--嵌套的控制结构、其他控制语句

--循环结构 测试题

-自定义类型

--自定义类型

--自定义类型

-第2章小结

--第二章小结

-实验二:C++简单程序设计(下)

--实验二C++简单程序设计(下)

第3章 函数

-导学

--导学

-函数定义

--函数定义

--函数定义 测试题

-函数调用

--函数调用(例3-1)

--例3-2

--例3-3

--例3-4

--例3-5

--例3-6

--函数调用 测试题

-嵌套与递归

--函数的嵌套调用(例3-7)

--函数的递归调用(例3-8)

--例3-9

--例3-10

--嵌套与递归 测试题

-函数的参数传递

--函数的参数传递

--函数的参数传递 测试题

-引用类型

--引用类型(例3-11)

--引用类型 测试题

-含有可变参数的函数

--含有可变参数的函数

--含有可变参数的函数 测试题

-内联函数

--内联函数(例3-14)

--内联函数 测试题

-constexpr函数

--constexpr函数

--CONSTEXPR函数课后习题

-带默认参数值的函数

--带默认参数值的函数

--默认参数值例(3-15)

--带默认参数值的函数 测试题

-函数重载

--函数重载(例3-16)

--函数重载 测试题

-C++系统函数

--C++系统函数(例3-17)

--C++系统函数习题

-第3章小结

--第三章小结

-实验三(上)函数的应用

--实验三(上)函数的应用

-实验三(下)函数的应用

--实验三(下)函数的应用

第4章 类与对象

-导学

--导学

-面向对象程序的基本特点

--面向对象程序的基本特点

--面向对象程序的基本特点 测试题

-类和对象

--类和对象的定义

--类和对象的程序举例

--类和对象 测试题

-构造函数

--构造函数基本概念

--构造函数例题(1)——例4-1

--构造函数例题(2)——例4-2

--委托构造函数

--复制构造函数

--复制构造函数调用举例

--构造函数 测试题

-析构函数

--析构函数

--析构函数 测试题

-类的组合

--类的组合

--类的组合程序举例

--前向引用声明

--类的组合 测试题

-UML简介

--UML简介

--UML简介课后习题

-结构体与联合体

--结构体(例4-7)

--联合体(例4-8)

--结构体与联合体 测试题

-枚举类

--枚举类

--枚举类 测试题

-第4章小结

--第四章小结

-实验四(上)

--实验四(上)

-实验四(下)

--实验四(下)

第5章 数据的共享与保护

-导学

--导学

-标识符的作用域与可见性

--标识符的作用域与可见性

--标识符的作用域与可见性 测试题

-对象的生存期

--对象的生存期

--对象的生存期 测试题

-类的静态成员

--静态数据成员(例5-4)

--静态函数成员(例5-5)

--类的静态成员 测试题

-类的友元

--类的友元(例5-6)

--类的友元 测试题

-共享数据的保护

--共享数据的保护(例5-7)

--共享数据的保护 测试题

-多文件结构和预编译命令

--多文件结构和预编译命令(例5-10)

--多文件结构和预编译命令 测试题

-第5章小结

--小结

-实验五

--实验五

第6章 数组、指针与字符串(一)

-导学

--导学

-数组的定义与初始化

--数组的定义与使用

--数组的储存与初始化

--一维数组应用举例

--数组的定义与初始化 测试题

-数组作为函数的参数

--数组作为函数参数(例6-2)

--数组作为函数的参数 测试题

-对象数组

--对象数组

--对象数组 测试题

-基于范围的for循环

--基于范围的for循环

-指针的定义和运算

--指针的概念、定义和指针运算

--指针的初始化和赋值

--指针的算术运算、关系运算

--指针的定义和运算 测试题

-综合实例

--综合实例

-实验六(上)

--实验六上

第6章 数组、指针与字符串(二)

-指针与数组

--用指针访问数组元素

--指针数组

--指针与数组 测试题

-指针与函数

--以指针作为函数参数

--指针类型的函数

--指向函数的指针

--指针与函数 测试题

-对象指针

--对象指针

--对象指针 测试题

-动态内存分配

--动态分配与释放内存

--申请和释放动态数组(一)

--申请和释放动态数组(二)

--动态内存分配 测试题

-智能指针

--智能指针

-vector对象

--vector对象

--vector对象 测试题

-对象复制与移动

--深层复制与浅层复制

--移动构造

--对象复制与移动 测试题

-字符串

--C风格字符串

--string类

--字符串 测试题

-第6章小结

--第六章小结

-综合实例

--综合实例

-实验六(下)

--实验六(下)

逗号运算、关系运算、逻辑运算和条件运算笔记与讨论

也许你还感兴趣的课程:

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