第五章选择结构程序设计 5.1关系运算符和关系表达式 关系运算:比较运算。 a>5 关系表达式 --关系运算符 a3表达式值为“假”0
5.1 关系运算符和关系表达式 ◼ 关系运算:比较运算。 a>5 ---关系表达式 > ---关系运算符 a3 表达式值为“假” 0 第五章 选择结构程序设计
■511关系运算符及其优先次序 C语言关系运算符: (1),>= (2)==(等于),!=(不等于) 运算级别说明:同类级别相同;(1)>(2) >b!=c 2.关系运算符的优先级低于算术运算符。 a>btc 3.关系运算符的优先级高于赋值运算符。 高 低 算术运算符关系运算符赋值运算符 a==b(b+c) a>b=c 等效于(a>b)!=c 等效于a==(b<c)
◼ 5.1.1 关系运算符及其优先次序 ◼ C语言关系运算符: (1) ,>= (2) = = (等于), != (不等于) 运算级别说明:同类级别相同;(1)>(2) a>b!=c ◼ 2.关系运算符的优先级低于算术运算符。 a>b+c ◼ 3. 关系运算符的优先级高于赋值运算符。 高 → 低 算术运算符 关系运算符 赋值运算符 a==bb+c 等效于 a>(b+c) a>b!=c 等效于 (a>b)!=c a==b<c 等效于 a==(b<c)
512关系表达式 定义:用关系运算符将两个表达式连接起来的式子。 a>b,a+b>b+c,(a=3)>(b=5) b)>(bb (a>b)=c b+cb f=a>b>c(“>”运算符是自左至右的结合方向)
◼ 5.1.2 关系表达式 ◼ 定义:用关系运算符将两个表达式连接起来的式子。 a>b, a+b>b+c,(a=3)>(b=5), ’a’<’b’ , (a>b)>(b<c) ◼ 关系表达式的值:逻辑值,即“真”或“假” 。 以1代表“真”; 以0代表“假”. ◼ 例如,若a=3,b=2,c=1,则: a>b (a>b)==c b+c<a d=a>b f=a>b>c (“>”运算符是自左至右的结合方向)
5.2逻辑运算符和逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来就是逻 辑表达式。 n52.1逻辑运算符及其优先次序 C语言提供三种逻辑运算符: 1.&逻辑与(AND) 双目运算符 2.|1逻辑或(OR) 双目运算符 3.!逻辑非(N0T) 单目运算符 ■逻辑运算规则(p93) a&b若a,b为真,则a&匙b为真 ab若a,b之一为真,则a‖|b为真。 !a若a为真,则!a为假
◼ 5.2 逻辑运算符和逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来就是逻 辑表达式。 ◼ 5.2.1 逻辑运算符及其优先次序 ◼ C语言提供三种逻辑运算符: 1.&& 逻辑与(AND) --双目运算符 2.|| 逻辑或(OR) --双目运算符 3. ! 逻辑非(NOT) --单目运算符 ◼ 逻辑运算规则(p93): a&&b 若a,b为真,则a&&b为真。 a||b 若a,b之一为真,则a||b为真。 !a 若a为真,则!a为假
■在一个逻辑表达式中如果包含多个逻辑运算符,如 I a&&bx>y&&c 优先次序: 高 低 !→&& !→算术运算符→关系运算符→&8→→赋值运算符 例: !a&kb||x>y&&c可写成:((!a)&&b)|((xy)&&C) (a>b)&匙(x>y)可写成:a>b&xy (a=b)‖(x=y)可写成:a=bx>y (!a)‖(a>b)可写成:!la>b
◼ 在一个逻辑表达式中如果包含多个逻辑运算符,如 !a&&b||x>y&&c ◼ 优先次序: 高 → → 低 ! → && → || !→算术运算符→关系运算符→&&→||→赋值运算符 ◼ 例: !a&&b||x>y&&c 可写成: ((!a)&&b)||((x>y)&&c) (a>b)&&(x>y) 可写成:a>b&&x>y (a==b)||(x==y) 可写成:a==b||x>y (!a) ||(a>b) 可写成: !a||a>b
522逻辑表达式 逻辑表达式的值以数值1代表“真”,以0代表“假”, 但在判断一个量是否为“真”时,以0代表“假”,以非0代表 “真”。即将一个非零的数值认作为“真”。 例如: ①若a=4,则!a值为0。 ②若a=4,b=5,则a&&b的值为1 ③a、b值同前,a|b值? ④a、b值同前,!a|b值? ⑤4880|12值? 说明:在逻辑表达式中作为参加逻辑运算的运算对象(操作数)可以是 0(“假”)或任何非0的数值(按“真”对待)
◼ 5.2.2 逻辑表达式 ◼ 逻辑表达式的值以数值1代表“真” ,以0代表“假” , ◼ 但在判断一个量是否为“真”时,以0代表“假” ,以非0代表 “真” 。即将一个非零的数值认作为“真” 。 ◼ 例如: ①若a=4,则!a值为0。 ②若a=4,b=5,则a&&b的值为1。 ③a、b值同前,a||b 值 ? ④a、b值同前,!a||b值 ? ⑤4&&0||2 值 ? ◼ 说明:在逻辑表达式中作为参加逻辑运算的运算对象(操作数)可以是 0(“假”)或任何非0的数值(按“真”对待)
例:求解表达式5>3&&2|1831&&2|8-4!0 第二步:1&821|8<4-!0 第三步:!0 18<4-1 第四步:4-1 8<3 第五步:8<3 结果为1 逻辑运算符两侧的运算对象可以是任何类型的数据。系统最终以0和非0 来判定它们属于“真”或“假”。例如 a’&&b′的值为1(在逻辑表达式中) 因为’a′和’b′的Asci值都不为0,按“真”处理。 在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在 必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。 例如 1.a&&b&&c a为假,就不必判别b和c; 如果a为真,b为假,不判别c
◼ 例: 求解表达式 5>3&&2||8<4-!0 ----首先考虑结合方向 第一步:5>3 1&&2||8-4!0 第二步:1&&2 1||8<4-!0 第三步:!0 1||8<4-1 第四步:4-1 1||8<3 第五步:8<3 1||0 结果为 1 ◼ 逻辑运算符两侧的运算对象可以是任何类型的数据。系统最终以0和非0 来判定它们属于“真”或“假”。例如 ‘ a’&&’b’ 的值为1 (在逻辑表达式中) 因为’a’和’b’的Ascii值都不为0,按“真”处理。 ◼ 在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在 必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。 例如: ◼ 1.a && b && c a为假,就不必判别b和c; 如果a为真,b为假,不判别c
2.a|b|c只要a为真(非0)就不必判别b和c 对&运算符只有a≠0,才继续进行右面的运算。对运算符来说, 只有a=0才继续进行其右面的运算。 例:已知a=1,b=2,c=3,d=4,m=1,n=1 执行逻辑表达式:m=a>b)&&(n=c>d)后 则m=?N=? 逻辑表达式的应用: 例如,判别某一年year是否闰年。闰年的条件是符合下面二者之 ①能被4整除,但不能被100整除。②能被4整除,又能彼400整除。 可以用一个逻辑表达式来表示: year %4==0&&year %100! =o lyear%400=0 当year为某一整数值时,上述表达式值为真(1),则year为闰 年;否则为非闰年。 (year%4==0&&year%100!=0|year%400=0) 以上公式表示?
◼ 2.a || b || c 只要a为真(非0)就不必判别b和c 对&&运算符只有a≠0,才继续进行右面的运算。对||运算符来说, 只有a=0才继续进行其右面的运算。 ◼ 例: 已知a=1,b=2,c=3,d=4,m=1,n=1 执行逻辑表达式:m=a>b)&& (n=c>d) 后 则 m=? N=? ◼ 逻辑表达式的应用: 例如,判别某一年year是否闰年。闰年的条件是符合下面二者之一: ①能被4整除,但不能被100整除。②能被4整除,又能彼400整除。 可以用一个逻辑表达式来表示: year%4==0&&year%100 !=0||year%400==0 当year为某一整数值时,上述表达式值为真(1),则year为闰 年;否则为非闰年。 !( year%4==0&&year%100 !=0||year%400==0) 以上公式表示 ?
■53i语句 if语句是用来判定所给定的条件是否满足,根据判 定的结果(真或假)决定执行给出的两种操作之一。 5.3.1i语句的三种形式 C语言提供了三种形式的if语句: 1.if(表达式)语句 例如:if(x>y) printf(”%d",x); ■这种i语句的执行过程见图: 表达式 语句
◼ 5.3 if语句 ◼ if语句是用来判定所给定的条件是否满足,根据判 定的结果(真或假)决定执行给出的两种操作之一。 ◼ 5.3.1 if语句的三种形式 ◼ C语言提供了三种形式的if语句: ◼ 1.if(表达式) 语句 ◼ 例如:if(x>y) printf(”%d”,x); ◼ 这种if语句的执行过程见图: 0 表达式 语句 1
■2.if(表达式)语句1else语句2 例如:if(xy) printf(”%d",x) Ise printf(”%d",y) 见图 真 假 表达式 语句 语句2
◼ 2.if(表达式) 语句1 else 语句2 ◼ 例如:if(x>y) printf(”%d”,x); ◼ else printf(”%d”,y); ◼ 见图 表达式 语句1 语句2 真 假