当前课程知识点:C语言程序设计 > 第3章 基本数据类型、运算符与表达式 > 3.5 赋值运算符和逗号运算符 > 赋值运算符和逗号运算符
同学们 大家好
这节课我们来学习
C程序中的赋值运算符和逗号运算符
在C程序中大部分的计算功能都是
由赋值语句实现的
赋值运算符和赋值表达式是
组成赋值语句的基本元素
首先来看基本运算符
同学们可以看到赋值运算符
在形式上与数学上的等号写法相同
但含义不同
赋值运算符是将赋值号右边的常量
变量或表达式的值赋给左边以变量名
所代表的地址空间
属于双目运算符
赋值运算符优先级只高于逗号运算符
它的结合方向为自右至左
赋值表达式由赋值运算符或复合赋值运算符
和相应的操作数组成的表达式
赋值表达式的作用是
将一个表达式的值赋给一个变量
看下面的程序段 定义三个整型变量x
y
z
将数值20赋值给变量x
再将x的值赋值给变量y
最后将变量x的值和y的值相加赋值给变量z
等号左侧是合法变量名
右侧是常量
变量或表达式
在C语言中允许对多个变量连续赋值
例如
按照赋值运算符
从右向左的结合顺序
依次对变量c
b
a赋值为10
在C语言中允许赋值表达式的嵌套
例如
按照赋值运算符
从右向左的结合顺序
先对y和z赋值
再执行加法运算
最终x的值为5
因此赋值表达式具有计算和赋值的双重功能
C语言规定
任何表达式在其末尾加上分号就构成了语句
有如下赋值语句
赋值表达式除了可以出现在赋值语句中
而且可以出现在其他语句中
如下程序段
在一个语句中完成了赋值和输出双重功能
C语言除了提供赋值运算符以外
还提供了各种复合赋值运算符
在赋值运算符
之前加上加
减
乘
除等运算符
可以构成复合赋值运算符
复合赋值运算符结合方向
自右向左性
与赋值运算符是同一个优先级
对表达式a += b可以这样理解
将a+移到赋值运算符右侧
在赋值运算符左侧写上变量a
等价于表达式a = a + b
如果b是包含若干项的表达式
则对b表达式添加括号
如下列两个表达式是等价的
不要将表达式错写成此式
分析下面的程序段∶
此时赋值表达式的求解步骤如下∶
第一步先执行
a-=a*a的运算
此时 a的值为-132
第二步再进行
a+=-132的运算
a的值为-264
在C语言中还提供了一种特殊的运算符
逗号运算符
用逗号运算符将多个表达式接起来
构成逗号表达式
首先逗号运算符的优先级是最低的
其次逗号运算符是左结合
即逗号表达式的求值顺序是
从左向右依此计算用逗号分隔的各表达式的值
最后一个表达式的值就是整个逗号表达式的值
如
逗号表达式的值为
第三个表达式b++的值3
特别强调的是并不是任何地方出现的逗号
都是作为逗号运算符
例如函数参数也是用逗号来间隔的
这里的i、j、k
只是printf函数的3个参数
另外逗号表达式在C语言程序中用途较少
通常常用在for循环语句中
具体的含义我们在后面的课程中进行讲解
同学们今天的内容就讲到这
我们下次课再见
-计算思维与计算机
--计算思维与计算机
--计算思维与计算机
--计算思维和计算机
-2.1 程序设计语言的发展及其特点和应用
--程序设计语言的特点及发展
- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤
--C语言程序的结构和编制步骤
-3.1 C语言的数据类型
--C语言的数据类型
--C语言的数据类型
-3.2 常量
--常量
--常量
-3.3 什么是变量
--什么是变量
--什么是变量
-3.4 如何进行算术运算
--如何进行算术运算
--如何进行算术运算
-3.5 赋值运算符和逗号运算符
--赋值运算符和逗号运算符
-3.6 数据类型转换
--数据类型转换
--数据类型转换
-4.1 格式化输出printf
--格式化输出
-4.2 格式化输入scanf及字符数据的非格式化输入输出
--格式化输入
-5.1 关系运算符和关系表达式
--关系运算符和关系表达式
-5.2 逻辑运算符和逻辑表达式
--逻辑运算符和逻辑表达式
-5.3 条件运算符和条件表达式
--条件运算符和条件表达式
-5.4 if语句
--if语句
--if语句
-5.5 switch语句
--switch语句
--switch语句
-6.1 while语句
--while语句
--while语句
--do-while语句
-6.2 for语句
--for语句
--for语句
-6.3 循环的嵌套
--循环的嵌套
--循环的嵌套
-6.4 break语句和continue语句
--break和continue语句
-7.1 一维数组的定义和引用
--一维数组的定义和引用
-7.2 一维数组的赋值
--一维数组的赋值
--一维数组的赋值
-7.3 二维数组的定义和引用
--二维数组的定义和引用
-7.4 二维数组的赋值
--二维数组的赋值
--二维数组的赋值
-7.5 字符串的本质
--字符串的本质
--字符串的本质
-7.6 字符串操作的常用函数
--字符串常用函数
-7.7 字符串数组
--字符串数组
--字符串数组
-8.1 函数概述
--函数概述
--函数概述
-8.2 有参函数
--有参函数
--有参函数
-8.3 函数参数的传递方式
--函数参数的传递方式
-8.4 变量的作用域和生存期
--变量的作用域和生存期
-8.5 变量的存储类型
--变量的存储类型
--变量的存储类型
-8.6 函数的嵌套和递归调用
--函数的嵌套和递归调用
-8.7 函数的作用域与封装
--函数的作用域与封装
-9.1 指针变量的概念(上)
--指针变量的概念(上)
-9.2 指针变量的概念(下)
--指针变量的概念(下)
-9.3 指向一维数组的指针变量
--指向一维数组的指针变量
-9.4 指向二维数组的指针变量(上)
--指向二维数组的指针变量(上)
-9.5 指向二维数组的指针变量(下)
--指向二维数组的指针变量(下)
-9.6 动态内存分配
--动态内存分配
--动态内存分配
-10.1 编译预处理
--编译预处理
-11.1 用户自己建立数据类型
--用户自己建立数据类型
-11.2 定义结构体类型变量
--定义结构体类型变量
-11.3 结构体变量的引用与初始化
-11.4 结构体数组
--结构体数组
--结构体数组
-11.5 指向结构体类型数据的指针
--指向结构体类型数据的指针
-12.1 文件的基本概念和文件指针
--文件的基本概念和文件指针
-12,2 文件的打开和关闭
--文件的打开和关闭
--文件的打开和关闭
-12.3 文本文件读写
--文本文件读写
--文本文件读写
-12.4 二进制文件读写
--二进制文件读写
--二进制文件读写