《C程序设计》第1章基本数据与表达式(四-2).ppt

上传人:本田雅阁 文档编号:2152578 上传时间:2019-02-23 格式:PPT 页数:55 大小:547.51KB
返回 下载 相关 举报
《C程序设计》第1章基本数据与表达式(四-2).ppt_第1页
第1页 / 共55页
《C程序设计》第1章基本数据与表达式(四-2).ppt_第2页
第2页 / 共55页
《C程序设计》第1章基本数据与表达式(四-2).ppt_第3页
第3页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《《C程序设计》第1章基本数据与表达式(四-2).ppt》由会员分享,可在线阅读,更多相关《《C程序设计》第1章基本数据与表达式(四-2).ppt(55页珍藏版)》请在三一文库上搜索。

1、1.5.3 逻辑表达式,逻辑表达式用于判断运算。 逻辑表达式的值只有两个: 表达式 成立 为 true(1) 表达式 不成立 为 false(0) 表达式求值过程中,非0值都作为逻辑真。 构成逻辑表达式的运算符有关系运算符和逻辑运算符。,1. 关系运算,关系运算是指对两个运算量的大小进行比较。,关系运算符: 大于 = 大于等于 小于 = 小于等于 = 等于 != 不等于 优先级: 低于算术运算类,高于赋值类 结合性: 从左向右结合,例: 若有 int x = 2 , y = 3 , z ; 则 x = = y x != y,值为 0,值为 1,z 的值为 1,z = 2 = 3 = 5,z =

2、 0 = 5,z = 1,z = 3 - 1 = x + 1 = y + 2,1. 关系运算,(1)设 a = 0, b = 0.5, x = 0.3 表达式 a = x = b 的结果为:,0,1,注意: 说明数学含义 x在区间a, b 的数学表达式 a x b 不能使用 a = x = b 表示 应该使用 a = x & x = b 表示,注意关系运算的正确使用:,1. 关系运算,注意关系运算的正确使用:,(2)表达式 5 2 7 6 的结果为:,0,1,讨论: 5 2 7 8 是一个无意义的数学式子,但在C+中是合法表达式 应尽量避免使用这种意义不清的表达式,0,1. 关系运算,注意关系

3、运算的正确使用:,(3) 关系表达式的结果为整数,所以也可以看作整型表达式。 例: int i = 1 , j = 7 , a ; a = i + ( j % 4 != 0 ) ;,讨论: 应尽量避免使用这种意义不清的表达式,3,1,2,1. 关系运算,注意关系运算的正确使用:,(4) 字符数据按ASC码值进行比较 例: a 0 值为 1 (true) A 100 值为 0 (false),1. 关系运算,注意关系运算的正确使用:,(5) 实数比较的误差 例: 1.2345678901234567897 = 1.2345678901234567898 值为 1(true) 这是数据有效位数引起

4、的误差。,讨论: 实数比较宜采用求误差值形式: fabs ( x - y ) 例如: fabs( x - y ) 1e-5,1. 关系运算,2. 逻辑运算,& 逻辑与 左结合 | 逻辑或 左结合 ! 逻辑非 右结合,逻辑运算符:,逻辑与,2. 逻辑运算,逻辑与,2. 逻辑运算,逻辑与,2. 逻辑运算,逻辑或,逻辑与,2. 逻辑运算,逻辑或,逻辑与,2. 逻辑运算,逻辑或,逻辑与,2. 逻辑运算,逻辑与,逻辑或,2. 逻辑运算,逻辑与,逻辑或,2. 逻辑运算,逻辑与,逻辑或,逻辑非,2. 逻辑运算,逻辑与,逻辑或,逻辑非,2. 逻辑运算,逻辑与,逻辑或,逻辑非,2. 逻辑运算,逻辑与,逻辑或,逻

5、辑非,2. 逻辑运算,逻辑真值表:,2. 逻辑运算,逻辑运算规律:,1 & a = = a 0 | a = = a 0 & a = = 0 1 | a = = 1 0 & !a = = 0 1 | !a = = 1,a | a = = a a & a = = a ! ( a | b ) = = !a & !b !( a & b) = = !a | !b ! ( !a ) = = a,2. 逻辑运算,其中:a,b均为逻辑值1(true)或0(false),逻辑运算规律:,E1 & E2 当表达式 E1 的值为 0 时,不再对 E2 求值 E1 | E2 当表达式 E1 值为非 0 时,不再对 E

6、2 求值,例:,x = y = 0 ; x + ,2. 逻辑运算,逻辑运算规律:,E1 & E2 当表达式 E1 的值为 0 时,不再对 E2 求值 E1 | E2 当表达式 E1 值为非 0 时,不再对 E2 求值,例:,x = y = 0 ; x + ,x +,&,x + &,x +,结果:逻辑表达式值为0,x 的值为 1,y 的值为 0,2. 逻辑运算,结果:逻辑表达式值为1,逻辑运算规律:,E1 & E2 当表达式 E1 的值为 0 时,不再对 E2 求值 E1 | E2 当表达式 E1 值为非 0 时,不再对 E2 求值,例:,x = y = 0 ; x + ,x = y = 1 ;

7、 x - | y - ;,结果:逻辑表达式值为0,想一想 如果有 x + ; y + ; x 则 逻辑表达式的值是多少? 变量 x 、y 的值是多少?,2. 逻辑运算,-2 1,例: 写出描述点 A(x,y) 落在图中绿色部分 ( 不压线 ) 的 C + + 表达式:,1.5.3 逻辑表达式,1.5.4 赋值表达式,赋值表达式的作用是把数据值写入变量,修改对象的值,一般形式为: 变量 = 表达式,赋值表达式的作用是把数据值写入变量,修改对象的值,一般形式为: 变量 = 表达式,赋值运算符,例如 int Score1 = 90 ; int Score2 = 75 ; int Temp = Sco

8、re2; Score2 = Score1; Score1 = Temp;,1.5.4 赋值表达式,赋值表达式的作用是把数据值写入变量,修改对象的值,一般形式为: 变量 = 表达式,例如 int Score1 = 90 ; int Score2 = 75 ; int Temp = Score2; Score2 = Score1; Score1 = Temp;,1.5.4 赋值表达式,赋值表达式的作用是把数据值写入变量,修改对象的值,一般形式为: 变量 = 表达式,例如 int Score1 = 90 ; int Score2 = 75 ; int Temp = Score2; Score2 =

9、Score1; Score1 = Temp;,90,75,Score1,Score2,Temp,75,1.5.4 赋值表达式,赋值表达式的作用是把数据值写入变量,修改对象的值,一般形式为: 变量 = 表达式,例如 int Score1 = 90 ; int Score2 = 75 ; int Temp = Score2; Score2 = Score1; Score1 = Temp;,90,75,Score1,Score2,Temp,75,90,1.5.4 赋值表达式,赋值表达式的作用是把数据值写入变量,修改对象的值,一般形式为: 变量 = 表达式,例如 int Score1 = 90 ; i

10、nt Score2 = 75 ; int Temp = Score2; Score2 = Score1; Score1 = Temp;,90,90,Score1,Score2,Temp,75,75,1.5.4 赋值表达式,赋值运算的强制类型转换,例如 int x = 0 ; x = 2.3 ; cout “x = “ x ;,x = 2,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ; x = ( y = z + 2 ) ; ( x =

11、y ) = z + 2 ; z + 2 = x = y ;,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ; x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z + 2 = x = y ;,(1)计值,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ;

12、x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z + 2 = x = y ;,(2)把 z+2 的值写入 y,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ; x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z + 2 = x = y ;,(3)把 y 的值写入 x,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值

13、表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ; x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z + 2 = x = y ;,与第一行等价,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ; x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z + 2 = x = y ;,与第一行等价,1.5.4 赋值表达式,赋值运算的优先级

14、和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ; x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z + 2 = x = y ;,(1)把 y 的值写入 x,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ; x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z

15、+ 2 = x = y ;,(2)求值,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ; x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z + 2 = x = y ;,(3)把 z+2 的值写入 x,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ;

16、x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z + 2 = x = y ;,注意 对变量 x 作了两次写操作,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ; x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z + 2 = x = y ;,注意 第一次赋值操作没有意义,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为

17、左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ; x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z + 2 = x = y ;,错误 向哪一个对象赋值?,1.5.4 赋值表达式,赋值运算的优先级和关联性,赋值运算的优先级很低 赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值,例如 x = y = z + 2 ; x = y = ( z + 2 ) ; x = ( y = z + 2 ) ; ( x = y ) = z + 2 ; z + 2 = x = y ;,它是一个右值表达式 只能放在赋值号右边

18、,1.5.4 赋值表达式,复合赋值运算,双目算符 op 的表达式: A = A op B 可以缩写成: A op = B,c = c - k,c - = k,x = x * ( y + 8 ),x * = y + 8,x = x + 3,x + = 3,x = x % 3,x % = 3,例:,1.5.4 赋值表达式,复合赋值运算,双目算符 op 的表达式: A = A op B 可以缩写成: A op = B,+= -= *= /= %= = &= = |=,C+ 提供的10个复合赋值运算符:,用于位运算,1.5.4 赋值表达式,1.5.5 条件表达式,条件运算表达式格式:,E1 ? E2

19、: E3 其中 ? : 称为条件运算符,是C+中唯一的三目运算符; E1、E2、E3 为表达式。 功能 根据 E1 的值,决定计算 E2 或 E3。 若 E1 的值为true(非0),条件表达式的值为 E2 的值; 若 E1 的值为false(0), 条件表达式的值为 E3 的值。,示例,/ 例1-16 计算 a + | b | 的值 # include void main() float a,b; cout a b; cout = 0 ? a + b : a - b ) endl ; ,注意 添加括号 条件运算级别低于插入,1.5.5 条件表达式,示例, 计算 a、b之中的大值: max =

20、 a b ? a : b 求 a 的符号: sig = a 0 ? 1 : ( a = A & ch = Z) ? ( ch + 32 ) : ch,1.5.5 条件表达式,1.5.6 逗号表达式,逗号表达式格式:,E1 , E2 , E3 ,En 其中 , 称为逗号运算符,运算级别最低; E1、E2、E3、 En 为表达式。 功能 顺序执行 E1、E2、E3 En,最后获得逗号表达式的值。 注意 , 也用于分隔符,如: int func ( int a, int b , double x );,逗号表达式示例:,(1) a = 3 * 5, a * 4,(2) ( a = 3 * 5 , a * 4 ) , a + 5,(3) b = ( a = 3, 6 * 3 ),(4) b = a = 3 , 6 * a,15, a=15,60,60,15, a=15,60,60,20,20,3, a=3,18,18,b=18,3, a=3, b=3,18,18,1.5.6 逗号表达式,以下从高到低排列各类运算的优先级,i +1 j * 4 & ! P | Q 等价于 : ( ( ( i +1 ) ( j * 4 ) ) & ( ! P ) ) | Q P != i j | Q & S 等价于 : ( P != ( i j ) ) | ( Q & S ),例如,再论运算符的优先关系,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1