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

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

条件运算符和条件表达式在线视频

下一节:if语句

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

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

同学们大家好

本节我们来学习C语言中的条件运算符

和条件表达式

有时

if语句执行时

当被判别的表达式的值为

真或假时

都执行一个赋值语句

且向同一个变量赋值

if

a>b

max=a

else max=b

当a>b时将a的值赋给max

当a<=b时将b的值赋给max

可以看到无论a>b是否满足

都是给同一个变量赋值

C提供条件运算符和条件表达式

来处理这类问题

可以把上面的if语句改写为

max=(a>b)?a: b;

赋值号右侧的

( a>b)? a:b

是一个条件表达式

?:是条件运算符

如果

a>b

条件为真

则条件表达式的值等于a

否则取值b

如果a等于5

b等于3

则条件表达式

(a>b)? a:b 的值

就是a的值5

把它赋给变量max

因此max的值为5

条件运算符要求有3个操作对象

称为三目运算符

它是C语言中唯一的一个三目运算符

条件表达式的一般形式为

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

条件运算符的执行顺序

先求解表达式1

若为非0真

则求解表达式2

此时表达式2的值就作为整个条件表达式的值

若表达式1的值为0

则求解表达式3

表达式3的值就是整个条件表达式的值

赋值表达式max=(a>b)? a:b

的执行结果

就是将条件表达式的值赋给max

也就是将a和b二者中大者赋给max

条件运算符优先级高于赋值运算符

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

因此max= (a>b)?a:b

等价于

max= a> b?a:b

a> b? a:b+1

等价于

a>b ? a:(b+1)

而不是

(a>b?a:b)+1

条件表达式中表达式2和表达式3

不仅可以是数值表达式

还可以是赋值表达式或函数表达式

例如

a>b ? (max=a):(max=b);

表达式加一个分号

就形成了表达式语句

相当于

此时

表达式2和表达式3是赋值表达式

注意

赋值表达式两侧有括号

请同学们想一想

为什么? 例如

a> b?printf

"%d,a:

printf

%d,b

上面条件表达式语句相当于

以下if...else语句

例题

输入一个字符

判别它是否为大写字母

如果是

将它转换成小写字母

如果不是

不转换

然后输出最后得到的字符

解题思路

可以用条件表达式来处理

当字母是大写时

转换成小写字母

否则不转换

编写程序如图所示

运行结果如图所示

在本程序中

条件表达式

ch>='A' && ch<='Z'

?(ch+32):ch

的作用是

如果字符变量ch的值为大写字母

则条件表达式的值为

ch+32

即相应的小写字母

32是小写字母和大写字母ASCII的差值

如果ch的值不是大写字母

则条件表达式的值为ch

即不进行转换

可以看到

条件表达式相当于一个if语句

用它处理简单的选择结构可使程序更简洁

本节的内容就讲到这里

同学们再见

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 二进制文件读写

--二进制文件读写

--二进制文件读写

条件运算符和条件表达式笔记与讨论

也许你还感兴趣的课程:

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