当前课程知识点:C语言程序设计 > 第3章 用C语言编写程序 > 3.3 算术、赋值、自增自减运算符 > 3.3 算术、赋值、自增自减运算符.mp4
大家好
我是云南大学信息学院的丁海燕老师
欢迎走进C语言程序设计课堂
今天我们讲解C语言算术
赋值
自增自减运算符
运算符的作用是
对运算对象完成规定的操作运算
用运算符和括号将运算对象
也称操作数
连接起来的
符合C语法规则的式子
称为表达式
运算对象包括常量
变量函数等
C语言的运算符非常丰富
能够构成不同类型的表达式
运算符的作用
对运算对象完成规定的操作运算
运算符按照操作对象的个数
可以分为单目运算符
双目运算符和三目运算符
运算符按照功能又可分为算术运算符
逻辑运算符等等
常用运算符如表格所示
例如算术运算符
逻辑运算符
关系运算符
赋值运算符
条件运算符
逗号运算符
位运算符
其他运算符等
运算符的优先级是各种运算符号的运算优先顺序
例如
算术运算优先于关系运算
算术运算中先乘除后加减
运算符的结合性
指运算符号和运算对象的结合方向
分为从左向右(左结合)
和从右向左(右结合)
例如
算术运算符为左结合
a-b+4
从左向右运算
赋值运算符为右结合
A赋为b赋值5
C语言中有44个运算符
共分为15个优先级别
其中1号优先级最高
15号优先级最低
例如
圆括号
数组元素下标
指向结构体成员
结构体成员运算符为1号最高优先级
逗号运算符为15号最低优先级
C语言的运算符的优先级和结合性
请参看附录C
表达式是由运算符将常量
变量
函数组合起来的式子
在C语言中任何一个表达式
都有一个运算结果
即表达式的值
注意
在同一个表达式中
必须按照运算符的优先级进行计算
先做优先级高的运算
再做优先级低的运算
优先级相同时则按照结合方向进行运算
所有的单目运算符
赋值运算符及条件运算符的结合方向都是自右向左
其他运算符的结合方向均为自左向右
例如
2.5+1/2
先进行1/2的计算
结果为2.5
-i++先进行i++的计算
等价于-(i++)
下面介绍算术运算符
算术运算符有
+(加)
-(减)
*(乘)
/(除)
%(取余)
注意
加减乘除的运算规则
和运算优先级等同于数学中的加减乘除运算
在C语言中没有乘方运算
要计算a的3次方
可以写作a*a*a的连乘形式
或使用库函数pow(a,3)
两个整型数据做除法运算“/”时
运算结果也是整型数据
即只取商的部分
而操作数中有一个为实型数据时
则结果为双精度实型数据
即double型
例如
1/2结果为0
1/2.0的结果为0.5
取余运算符要求运算对象必须是整型数据
它的功能是求两个操作数相除的余数
余数的符号与被除数的符号相同
例如
11%3的余数的值为2
-11%3的余数的值为-2
2%-4的余数的值为2
基本算术运算符的优先级从高到低为
括号最高
正、负号次之
乘号、除号、取余再次之
加、减号最低
并且
正、负号同级
乘号、除号、取余同级
加、减号同级
优先级如图所示
算术表达式
用基本算术运算符
自增自减运算符和圆括号
将运算对象连接起来的式子
称为算术表达式
算术表达式的值的数据类型
取决于参加运算的操作对象
注意
1. 将一个数学式写为C 语言表达式时
乘号“*”不能省略
2. 数学中有些常用的计算
可以用C系统提供的标准数学库函数
例如
求x的平方根写为sqrt(x)
求xy写作pow(x,y)
求弧度为x的sin 值写作sin(x)等
但要包含 math.h文件
3.必要的时候
根据需要添加圆括号改变运算顺序
有多层括号时一律使用圆括号
同学们可以思考一下
如何将下列数学表达式用C语言表示
下面介绍赋值运算符
1. 简单赋值运算符
简单赋值运算符“=”的功能是
将赋值运算符右边表达式的值
赋给赋值运算符左边的变量
格式为变量名赋值表达式
注意
赋值运算符左边只能是一个变量
不能是常量也不能是表达式
因为只有变量的值才能被改变
赋值运算符右边可以是C语言中
任何合法的表达式包括赋值表达式
赋值表达式的值就是赋值运算符左边变量所得到的值
将实型数据赋给整型变量
实型数据的小数部分被舍去后赋给变量
将整型数据赋给实型变量时
系统自动将整型数据转成实型数据赋给变量
例如
int a=5.6
变量a的值为整数5
float b=4
变量b的值为4. 0
2.复合赋值运算符
复合赋值运算符有以下10种
复合表达式具有复合计算并赋值功能
系统将复合赋值运算符
左边变量的值与右边表达式的值
按运算符左侧符号进行计算后再赋给变量
例如
a+=5
等价于a=a+5
x/=y+4
等价于x=x/(y+4)
若有定义int a=2
则表达式a-=a+=a*a的值
即为a的值为0
下面介绍自增
自减运算符
自增运算符(++)
和自减运算符(-)是单目运算符
自增自减表达式格式有4种
①变量名++
②++变量名
③变量名- -
④- -变量名
对于变量来说
①②表达式的功能相同
都是让变量的值增加1
③④表达式的功能相同
都是让变量的值减少1
即a++
a=a+1
a+=1
++a功能相同
a—
a=a-1
a-=1
--a功能相同
注意
++、--运算符只能用于变量
不能用于常量或表达式
++、--运算符比算术运算符的优先级高
当自增自减运算符位于变量名前时
表达式的值为变量值加1或减1的值
当位于变量名后时
表达式的值为变量原来的值
无论是位于变量名前还是变量名后
进行自加自减表达式的运算后
变量的值都是在原来值的基础上加1或减1
自增自减表达式对于变量本身来说
都相当于一个赋值表达式
例如
a++和++a
对于变量a来说都相当于a=a+1
例如
若在执行表达式计算之前变量a的值为5
则
a++表达式的值为5
a的值为6
++a表达式的值为6
a的值为6
a--表达式的值为5
a的值为4
--a表达式的值为4
a的值为4
好了
同学们
C语言算术
赋值
自增自减运算符我们就学到这儿
下节课再见
-1.1 C语言的发展和特点
--1.1自测题
-1.2 一个简单的C语言程序
--讨论单元
--源程序 例1.1 输出一行文字Hello,world!”
--源程序 例1.2 多个函数构成的程序,求两个整数中较大者
--1.2自测题
-1.3 程序、程序设计语言及C程序运行步骤
--讨论单元
--1.3 自测题
-第1章 自测题
-2.1 算法的概念与描述
--讨论单元
--2.1自测题
-2.2 简单算法举例、计算思维与结构化程序设计方法
--2.2 简单算法举例、计算思维与结构化程序设计方法.mp4
--讨论单元
--2.2 自测题
-第2章 自测题
-3.1 C语言程序的简单结构和标识符
--3.1自测题
-3.2 常量、变量与赋值
--讨论单元
--3.2 自测题
-3.3 算术、赋值、自增自减运算符
--3.3 自测题
-3.4 条件、逗号、取地址、求字节运算符以及各类数值型数据间的混合运算
--3.4 条件、逗号、取地址、求字节运算符以及各类数值型数据间的混合运算.mp4
--3.4 自测题
-3.5 输入输出举例与字符的输入输出
--源程序 例求一元二次方程的根。a、b、c由键盘输入。设b2-4ac>0
--源程序 例2. 从键盘输入BOY三个字符,然后把它们输出到屏幕
--3.5 自测题
-3.6 格式化输出printf函数
--3.6自测题
-3.7 格式化输入scanf函数
--讨论单元
--3.7 自测题
-3.8 C语言基本数据类型
--3.8 自测题
-C语言运算符与表达式自测题
-第3章 自测题
-4.1 关系、逻辑运算符和if语句
--讨论单元
--源程序 例4.2 输入两个实数,按代数值由小到大的顺序输出这两个数。
--4.1自测题
-4.2 switch语句
--讨论单元
--4.2自测题
-4.3 选择结构程序举例
--4.3 自测题
-第4章 自测题
-5.1 while和do…while语句
--讨论单元
--源程序 例5.1 用while语句求1+2+3+…+100
--源程序 例5.2 用do…while语句求1+2+3+…+100
--5.1自测题
-5.2 for语句
--5.2 自测题
-5.3 改变循环执行的状态及嵌套循环
--源程序 例5.5 输出100~200之间的不能被3整除的数。
--5.3 自测题
-5.4 循环结构程序举例1
--源程序 例1 按每行输出5个数的形式输出Fibonacci数列的前20项 。
--源程序 例2 判断输入的某个数m是否为素数。若是素数,输出“YES”,若不是,输出“NO”。
--源程序 例3 用牛顿迭代法求方程 2x3+4x2-7x-6=0 在x=1.5附近的根。
--源程序 例4. 求2~10000以内的完全数(一个数的因子(除了这个数本身)之和等于该数本身。)
--5.4 自测题
-5.5 循环结构程序举例2
--5.5自测题
-第5章 自测题
-6.1 一维数组的定义和引用
--讨论单元
--6.1自测题
-6.2 一维数组编程
--6.2 自测题
-6.3 二维数组的定义和引用
--6.3 自测题
-6.4 二维数组编程
--源程序 例2 将一个二维数组行和列的元素互换,存到另一个二维数组中。
--6.4 自测题
-6.5 字符数组的定义、初始化和输入输出
--讨论单元
--6.5 自测题
-6.6 字符串处理函数
--6.6 自测题
-6.7 字符数组编程
--6.7 自测题
-第6章 自测题
-7.1 函数概念以及怎样定义和调用函数
--源程序 例7.1
--7.1自测题
-7.2 函数调用时的数据传递、调用过程及函数返回值
--7.2 函数调用时的数据传递、调用过程及函数返回值.mp4
--讨论单元
--源程序 例7.2
--7.2 自测题
-7.3 对被调函数的声明和函数的嵌套调用
--源程序 例7.4
--7.3 自测题
-7.4 函数的递归调用
--源程序 例7.6
--源程序 例7.7
--7.4 自测题
-7.5 数组作为函数参数1
--讨论单元
--7.5 自测题
-7.6 数组作为函数参数2
--7.6 自测题
-7.7 局部与全局变量,内部与外部函数
--7.7 自测题
-7.8 变量的生存期与局部变量的存储方式
--7.8 自测题
-7.9 全局变量的存储类别
--7.9 自测题
-第7章 自测题
-8.1 指针概念、指针变量的定义和引用
--源程序 例8.1
--讨论单元
--8.1自测题
-8.2 指针变量作为函数参数
--讨论单元
--8.2 自测题
-8.3 数组元素的指针的运算以及通过指针引用数组元素
--8.3 数组元素的指针的运算以及通过指针引用数组元素.mp4
--8.3 自测题
-8.4 用数组名作函数参数
--8.4 自测题
-8.5 通过指针引用多维数组
--8.5 自测题
-8.6 通过指针引用字符串
--8.6 自测题
-8.7 字符指针作函数参数
--8.7 自测题
-8.8 指向函数的指针
--8.8 自测题
-8.9 返回指针值的函数
--源程序 截取子串
--8.9 自测题
-8.10 指针函数和多重指针
--8.10 自测题
-8.11 动态内存分配与指向它的指针变量
--讨论单元
--8.11 自测题
-第8章 自测题
-9.1 定义和使用结构体变量
--9.1自测题
-9.2 使用结构体数组
--讨论单元
--9.2 自测题
-9.3 结构体指针
--9.3 自测题
-第9章 自测题