当前位置:文档之家› C语言课件 第三章3

C语言课件 第三章3


2.自加、自减运算符 运算特点:
(4)作用:①产生一个表达式的值(运算结果) ②改变变量本身的值 若i的值为5 ++i i的值:6 该表达式的值:6 i++ 该表达式的值:5 i的值:6 --i i的值:4 该表达式的值:4 i-该表达式的值:5 i的值:4 特点:前缀运算是变量先变化再使用,而后缀运算 是变量先使用后变化。
例:变量a的值为9,计算a+=a-=a+a的值
分析:(1)a+a=18 (2)a-=18 即:a=a-18 得a=-9 (3)a+=a- 即:a+=-9 a=a+(-9) 得a=-18
∴ a+=a-=a+a的值为-18
练习:

若有int m=5,y=2; 则表达式y+=y-=m*=y后,y的值是?
a=3.600000,i=3
#43; * / % ①除了+、-既可以做单目运算符又可以做双目运 算符以外,其他的符号只能做双目运算符。 ②%的两个操作数只能是整型。左侧为被除数,右侧 为除数,结果为余数。 ③作为双目运算符两边的运算数的类型必须一致, 所得结果类型与运算数类型一致。 如:1.0/2.0得0.5 1/2得0 ④若两边类型不一致,系统将自动转换成同一类型, 再计算。如:9.0/2 9/2.0 都得4.5
算术表达式和运算符的 优先级与结合性
算术表达式:使用算术运算符和括号将 运算对象连接起来,符合 C 语法规则的式 子。 运算对象包括:常量、变量、函数等。 例如:2+sqrt(c)*b
1)优先级
()

+
-
*
/
双目
%
+

双目
单目
2)结合性 只有单目运算符的结合性是从右到左,其 余运算符的结合性是从左到右。 如:(5+1)%4 5+1/2 5*-2 5*(-2) 运算规则: (1)使用圆括号必须配对,由内向外依次计算 (2)按优先级由高到低进行,同一级,从左到 右进行。
3.10 赋值运算符和赋值表达式
4. 赋值表达式 由赋值运算符和一个表达式连接起来的 式子称为“赋值表达式”。 形式:<变量><赋值运算符><表达式> 例如:x=y=z=7 a=5+(b=6) a=(b=4)+(c=6) a=(b=10)/(c=2)
赋值表达式作为表达式的一种,使赋值操 作不仅可以出现在赋值语句中,而且可以以 表达式形式出现在其它语句中,例如: b=3; printf("%d",a=b);
例 逻辑运算符的使用。
#include <stdio.h> void main() { int a,b,c,d,e; a=1,b=2,c=3,d=-1; e=!a+b>c&&d; /*注意运算符的处理顺序*/ printf("e=%d\n",e); }
注意:
①.在数学上关系式0<x<10,在C语言中不能如 此表示,应表示为0<x&&x<10,才能正确表述 该逻辑关系。即只有当&&两边的表达式都成立 (为“真”)时,才表示x是符合该条件的值。 ②.在C语言中,由&&或||组成的逻辑表达式, 在特定的情况下会产生“短路”的现象。
3.6.1 运算符简介 (9)求字节数运算符(sizeof); (10)强制类型转换运算符; (11)分量运算符(.、->); (12)下标运算符([]); (13)其他运算符;
3.6.3 强制类型转换运算符
功能:将一个表达式的值转换成指定的类型。 例如:(int)(a+b) (int)3.234=3 不四舍五入 double(10%3)=1.000000 (int)x x的值不变 两种类型转换: 不指定类型情况下,系统自动转换; 在自动类型不能实现目的时,使用强制类型转换
3.10 赋值运算符和赋值表达式
2. 不同数据类型的赋值处理 如果赋值运算符两侧的类型不一致,但都 是数值型或字符型时,在赋值时系统会自动 进行类型转换。 例如:int i; i=3.65; 结果是使i的值为3。
请参考表3.7 《不同数据类型的赋值处理》P60
3.10 赋值运算符和赋值表达式
3. 复合的赋值运算符 复合赋值运算符有 10 种,其中与算术运算 符有关的: += -= *= /= %= 其优先级与赋值运算符的优先级相同。 例如: x+=5 等价于 x=x+5 a*=b+3 等价于 a=a*(b+3)

复习:


设有int x=11;则表达式(x++*1/3)的值是? 若s是int变量,有s=6,则表达式 s%2+(s+1)%2 的值为? 若有:int a=7; float x=2.5,y=4.7;则表达 式 x+a%3*(int)(x+y)/4 的值是?
3.9 逻辑运算符及其表达式
1.逻辑运算符 C语言中提供了三种逻辑运算符: && 逻辑“与”、 || 逻辑“或”、 ! 逻辑 “非” 2.逻辑表达式和逻辑运算符的优先级与结合性 由逻辑运算符和运算对象所组成的表达式称为 逻辑表达式。逻辑运算的对象可以是C语言中任意 合法的表达式。逻辑表达式的运算结果是:0或1。 例如:(a>b)&&(x>y)
首先b的值赋给变量a,然后输出a的值为3。
3.11 逗号运算符和逗号表达式
“,”是C语言提供的一特殊运算符,用其连接的 式子称逗号表达式。 形式:表达式1,表达式2,……,表达式n 说明: (1)从左到右依次运算,最后一个表达式的值就 是此逗号表达式的值。 如: (a=5,b=7,c=a+b) (i=3,i++,++i,i+5) (2) 所有运算符中,逗号运算符的优先级别最 低。
第三章 数据类型、运算符和表达式
3.6 运算符与表达式 3.7 算术运算符和算术表达式 3.8 关系运算符和关系表达式 3.9 逻辑运算符和逻辑表达式 3.10 赋值运算符和赋值表达式 3.11 逗号运算符和逗号表达式
3.6 算术运算符合算术表达式 3.6.1 运算符简介
C语言的运算符可分为以下几类: (1)算术运算符(+、-、*、/、%、++、--) (2)关系运算符(>、<、==、>=、<=、!=) (3)逻辑运算符(!、&&、||) (4)位运算符(<<、>>、~、|、∧、&=) (5)赋值运算符(=,+=、-=、*=、/=等) (6)条件运算符(?:) (7)逗号运算符(,) (8)指针运算符(*和&)
2.自加、自减运算符 运算特点:
(5)结合方向:自右至左 如:-i++ 即-(i++) 若i=3, 则表达式、i为多少?
【例3.18】
#include <stdio.h> main() { int i=3; printf("%d\n",(i++)+(i++)+(i++)); printf("%d\n",i); }
2.自加、自减运算符 运算特点:
(1)“++”和“--”的运算结果是使运算对象的值增 1或 减1。作用的对象是变量。 如:i++相当于i=i+1 i--相当于i=i-1 (2) “++”和“--”是单目运算符,运算对象可以 是整型变量,也可以是实型变量,不能是常量和表 达式。 如:i++ ++j ++3 (i+j)-(3)可作前缀,也可作后缀。 如: ++i --i i++ i--
强制类型转换 一般形式为: (类型名)(表达式)
注意:表达式应
该用括号扩起 来。如果写成 ( int)x+y 则 只将 x 转换成整 型,然后与 y 相 加。
【例3.16】 【例3.17】略
#include <stdio.h> main() { float a; int i; a=3.6; i=(int)a; printf("a=%f,i=%d",a,i); }
VC++中的运行结果: TC中的运行结果: 9 12 6 6
有的系统按照顾自左而右顺序求解括 号内的运算,表达式相当于3+4+5,即12, i的值为6。 而有些系统 (VC++) 把 3 作为表达式中 #include <stdio.h> 所有i的值,因此 main() 3个i相加,得到表达式 {的值为6。 值为9,i int i=3,a,b,c,d; 为了避免出现这种歧义性,应在算法 a=i++; b=i++; c=i++; 上采取措施,避免出现混淆。如果想得 d=a+b+c; 到12,可以写成: printf("%d\n",d); printf("%d\n",i); }

2.关系表达式和关系运算符的优先级与结合性
由关系运算符组成的表达式,称关系表达式。关系运 算符两边的运算对象可以是C语言中任意合法的表达 式。 例如:5>0、(a=3)>(b=5)、a>=c!=c等都是合法 的关系表达式。 ①.优先级 关系运算符的优先级低于算术运算符,高于赋值运算 符。 在六个关系运算符中,<、<=、>、>=的优先 级相同,高于==和!=,==和!=的优先级相同。 ②.结合性 关系运算符都是双目运算符,其结合性均为自左向右。
相关主题