学习目标:
掌握算术运算符和算术表达式
掌握赋值运算符和赋值表达式
掌握逻辑运算符和逻辑表达式
掌握条件运算符和条件表达式
理解运算符的优先级及结合性
理解常用的数学函数
重点:
掌握算术运算符和算术表达式
掌握赋值运算符和赋值表达式
掌握逻辑运算符和逻辑表达式
难点:
掌握条件运算符和条件表达式
理解运算符的优先级及结合性
运算符是告诉编译程序执行特定算术或逻辑操作的符号。
运算符主要分为三大类:算术运算符、关系运算符与逻辑运算符。
运算符、常量和变量构成C语言的表达式。
一、运算符的优先级与结合性
在表达式中,一个操作数两侧的运算符优先级不同时,先进行优先级较高的运算;两侧的运算符优先级相同时,按运算符的结合性所规定的结合方向处理。
所谓结合性是指,当一个操作数两侧的运算符具有相同优先级时该操作数是先与左边的运算符结合,还是先与右边的运算符结合。
自左至右的结合方向,称为左结合性。反之,称为右结合性。
二、算术运算符和算术表达式
1、算术运算符
+ - * / %
注意:
(1)运算符“%”只用于整型,它的两侧都必须是整型操作数。如果不是整型数,必须将操作数强制转换成整型再进行求余运算,否则将出现编译错误。
(2)若操作数中有负值,求余的原则为:先取绝对值求余数,余数的符号取被除数的符号。
2、算术运算符的优先级与结合性
Ø 算术运算符的优先级:先乘除、后加减;括号优先。
Ø 算术运算符的结合性:左结合性。
3、算术表达式
Ø 算术表达式是指用算术运算符和括号将运算对象连接起来,符合C语法规则的式子。
Ø 补充:如何利用%,/来取一个数的各位数字?
4、自增运算符和自减运算符
(1)自增运算符
自增运算符(++)是单目运算符,其作用使单个变量的值增1。
1)前置:++i。先执行i=i+1,再使用i值;
2)后置:i++。先使用i值,再执行i=i+1。
(2)自减运算符
自减运算符(--)也是单目运算符,其作用使单个变量的值减1。
前置:--i。先执行i=i-1,再使用i值;
后置:i--。先使用i值,再执行i=i-1。
说明:
① 自增运算符(++)、自减运算符(--),只能用于变量,不能用于常量和表达式。
② ++和--的结合方向是“自右至左”,其优先级高于算术运算符。
三、赋值运算符和赋值表达式
1、赋值运算符
Ø 赋值运算符“=”的作用是将一个数据赋给一个变量。
Ø 语法格式:
变量 = 表达式
Ø 功能:将“=”右侧的常量或表达式计算所得的值赋给左侧的变量。
2、复合赋值运算符
Ø 在赋值符“=”之前加上其他双目运算符,可以构成复合赋值运算符。
Ø 语法格式:
变量 双目运算符= 表达式
其中“双目运算符=”就是复合赋值运算符。它等价于:
变量=变量 双目运算符 表达式
3、赋值运算符的优先级与结合性
Ø 赋值运算符和复合赋值运算符的优先级为14级,在所有C语言的运算符中仅高于逗号运算符。
Ø 赋值运算符和复合赋值运算符的结合性:右结合性。
4、赋值表达式
Ø 由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。
Ø 语法格式:
变量 赋值运算符/复合赋值运算符 表达式
赋值表达式的求解过程:将赋值运算符右侧的“表达式”的值赋给左侧的变量。
赋值表达式的值:赋值运算结束后,赋值表达式左侧变量的值就是赋值表达式的值。
四、关系运算符和关系表达式
1、关系运算符
Ø 所谓“关系运算”实际上就是“比较运算”
Ø C语言提供6种关系运算符:
<(小于)<=(小于或等于)
>(大于)>=(大于或等于)
= =(等于)!=(不等于)
Ø 关系运算符的优先级:
(1)在关系运算符中,前4个优先级相同,后2个也相同,且前4个高于后2个。
(2)关系运算符的优先级,低于算术运算符,高于赋值运算符。
Ø 关系运算符的结合性:左结合性。
2、关系表达式
Ø 关系表达式是指用关系运算符将两个表达式连接起来进行关系运算的式子。
Ø 关系运算的结果非“真”即“假”。在C语言中没有逻辑型数据,“逻辑真”用整数“1”表示,“逻辑假”用整数“0”表示。即关系表达式的值是1(真)或0(假)。
五、逻辑运算符和逻辑表达式
1、逻辑运算符
Ø 在C语言中有三种逻辑运算符:
&&(逻辑与)、||(逻辑或)和!(逻辑非)。
Ø 逻辑运算符的运算规则:
(1)&&:当且仅当两个运算量的值都为“真”时,运算结果为1(真),否则为0(假)。
(2)||:当且仅当两个运算量的值都为“假”时,运算结果为0(假),否则为1(真)。
(3)!:当运算量的值为“真”时,运算结果为0(假);当运算量的值为“假”时,运算结果为1(真)。
逻辑运算见表3.1。
表3.1 C 语言中的逻辑运算
2、逻辑运算符的优先级与结合性
Ø (1)逻辑非的优先级最高,逻辑与次之,逻辑或最低。即由高到低依次为:!→&&→||。
Ø (2)逻辑运算符与其他种类运算符的优先级关系。由高到低依次为:!→算术运算→关系运算→&&→||→赋值运算。
Ø (3)逻辑运算符是左结合性。
3、逻辑表达式
Ø 逻辑表达式是指用逻辑运算符将一个或多个表达式连接起来进行逻辑运算的式子。
说明:
(1)逻辑运算符两侧的操作数,除可以是0和非0的整数外,也可以是其他任何类型的数据,如实型、字符型等。
(2)在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式。
六、条件运算符和条件表达式
条件运算符“?:”是C语言中唯一的三目运算符。含有条件运算符的表达式称为条件表达式。
语法格式:
表达式1?表达式2: 表达式3
语法规则:
当表达式1为真时,整个表达式的值为表达式2的值;表达式1为假时,整个表达式的值为表达式3的值。
条件运算符的优先级:高于赋值运算符,低于算术运算符、关系运算符和逻辑运算符。
条件运算符的结合性:右结合性。
七、逗号运算符和逗号表达式
在C语言中,逗号可以作为运算符来使用。用逗号运算符连接的表达式,称为逗号表达式。
语法格式:
表达式1,表达式2,…表达式n
优先级:在C语言的所有运算符中,逗号运算符优先级最低。
结合性:左结合性。
逗号表达式的值:最后一个表达式(表达式n)的值。
逗号表达式的求解过程:从左向右先求解表达式1,再求解表达式2,依此类推,最后求解表达式n。
八、数学函数
C语言中常用数学函数见表3.2。
表3.2 用于进行数值计算的函数
九、运用举例
1.例3.8:从键盘上输入一个字符,如果它是大写字母,则把它转换成小写字母输出;否则,直接输出。
ch = ( ch >= 'A' && ch <= 'Z' ) ? ( ch + 32 ) : ch ;
2. 例3.9:求平方根。
讨论题:
1)如何判定一个数是奇数、偶数、被哪个数整除?
2)如何判定一个数是能同时被7和11整除?
3)如何判定一个数倍7整除同时个位数是5?

