C06第4章 逻辑运算与选择结构程序(1)

合集下载

C语言第四章.选择结构程序设计

C语言第四章.选择结构程序设计

case 常量表达式n: 语句n; default : 语句n+1; }
语句的执行过程:
先计算表达式的值,并逐个与其后的常量表达式值相 比较; 当表达式的值与某个常量表达式的值相等时,即执行
其后的语句;
然后不再进行判断,继续执行后面所有case后的语句;
如表达式的值与所有case后的常量表达式均不相同时,
a+b>c && x+y<b 等价于 ((a+b)>c) && ((x+y)<b)
2)逻辑运算的值: 逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”
来表示。
反过来在判断一个量是为“真”还是为“假”时,以“0” 的数值代表“假”,以非“0”的数值代表“真”。
3)逻辑运算的规则:
(1)与运算&&
条件运算符和条件表达式
条件表达式通常用于赋值语句之中。 例如条件语句:
if(a>b) max=a;
else max=b; 可用条件表达式写为 max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a 赋予max, 否则把b 赋予max。
注意以下几点:
条件运算符的运算优先级 低于关系运算符和算术运算符,高于赋值符。 因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
注意:
(3) 在if 语句的三种形式中,所有的语句应为单个语句,
如果要想在满足条件时执行一组(多个)语句,则必须
把这一组语句用{ } 括起来组成一个复合语句。 例如:交换两个变量 if (a>b) { t= a; a=b; b=t; }

C语言程序设计-逻辑运算和选择结构

C语言程序设计-逻辑运算和选择结构

逻辑运算: 运算时以非0为“真”值,以0为“假”值。
a && b 与运算
假真 假0 0 真0 1
a || b 或运算
假真 假0 1
真1 1
a
!a
1
0ห้องสมุดไป่ตู้
例如: 4&&0||2 的值为1 5&&!0 的值为1
7
在逻辑表达式求解时,有可能出现某些逻辑运算 符不被执行,但整个表达式的结果已经得到。
a&&b&&c 若a为0,则b和c不再判断。表达式结果为0,即“假”值。 a||b||c 若a为1,则b和c不再判断。表达式结果为1,即“真”值。
1
选择结构语句是指程序在运行中,能依据运行时某 些变量或表达式的值,确定哪些程序段被执行以及哪些程 序段不被执行。
P
A
B
2
5.1 关系运算符和关系表达式
关系运算符用于两个数值之间的比较运算。C语言提供6 种关系运算符,它们是:
<、<=、>、>=、==、!=
优先级相同
优先级相同
关系运算符、算术运算符和赋值运算符的优先级为:

算术运算符
关系运算符

赋值运算符
3
例如:
c>a+b a>b!=c a==b<c a=b>c
等效于 等效于 等效于 等效于
c>(a+b) (a>b)!=c a==(b<c) a=(b>c)
关系表达式:用关系运算符将两个表达式连接起来的式子。 关系表达式运算结果为:“真”或“假”值。 C语言用1代表“真”值,用0代表“假”值。

C程序设计(第五版)-第4章选择结构程序设计课后习题答案

C程序设计(第五版)-第4章选择结构程序设计课后习题答案

C程序设计(第五版)-第4章选择结构程序设计课后习题答案1. 什么是算术运算?什么是关系运算?什么是逻辑运算?【答案解析】算熟运算:算术运算即“四则运算”,是加法、减法、乘法、除法、乘⽅、开⽅等⼏种运算的统称。

其中加减为⼀级运算,乘除为⼆级运算,乘⽅、开⽅为三级运算。

在⼀道算式中,如果有多级运算存在,则应先进⾏⾼级运算,再进⾏低⼀级的运算。

C语⾔中的算熟运算符包括:+、-、*、/、++、--、%等种类。

如果只存在同级运算;则从左⾄右的顺序进⾏;如果算式中有括号,则应先算括号⾥边,再按上述规则进⾏计算。

⽰例:$ (1 + 1)^{2} * 4+5 * 3$解析:1. 先进⾏括号内运算1+1,然后进⾏乘⽅运算得到结果4.2. 接下来与4相乘,得到结果163. 因为乘法优先级⼤于加法,因此先进⾏5*3,得到结果154. 最终相加得到结果31结果:31关系运算:关系的基本运算有两类:⼀类是传统的集合运算(并、差、交等),另⼀类是专门的关系运算(选择、投影、连接、除法、外连接等),⽽在C语⾔中,关系运算通常被认为是⽐较运算,将两个数值进⾏⽐较,判断⽐较结果是否符合给定的条件。

常见的关系运算符包括:<、<=、>、>=、==、!=等种类。

其中,前4种关系运算符(<、<=、>、>= )的优先级别相同,后2种(==、!=)也相同。

⽽前4种⾼于后2种。

例如, >优先于==。

⽽>与<优先级相同。

并且,关系运算符的优先级低于算术运算符,关系运算符的优先级⾼于赋值运算符(=)。

逻辑运算:在逻辑代数中,有与、或、⾮三种基本逻辑运算。

表⽰逻辑运算的⽅法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。

⽽在C语⾔中,逻辑运算通常⽤于使⽤逻辑运算符将关系表达式或其它逻辑量连接起来组成逻辑表达式⽤来测试真假值。

常见的逻辑运算符包括:&&、||、!等种类&&:与是双⽬运算符,要求有两个运算对象,表⽰两个运算对象都成⽴,则结果为真,否则结果为假。

C语言第四章选择结构程序设计方案小节

C语言第四章选择结构程序设计方案小节

第四章选择结构程序设计掌握第一节:关系表达式一•定义:在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。

比较两个量的运算符称为关系运算符,组成的表达式就叫关系表达式。

二.关系运算符及其优先次序1)<小于2)<=小于或等于3)>大于4)>=大于或等于5)==等于6)!=不等于关系运算符都是双目运算符,相同级别的运算符其结合性均为左结合。

关系运算符的优先级低于算术运算符,高于赋值运算符。

在六个关系运算符中,<,<=,>,>=勺优先级相同,高于==和匸,==和!=的优先级相同。

___ eg: 1>2男''>'女' 0 (nan>nv ,n=n,a<v 所以 '男'<' 女')吴''>'王 ' 1(同上,按汉语拼音进行比较.)三.关系表达式的形式:表达式关系运算符表达式关系表达式的值是真”和“假”,用“ 1”和“ 0”表示。

__形式1:数字关系运算符数字--------- 数字大小的比较形式2:字符关系运算符字符-------- 字符ascii 码值的比较【例 4.1.1】main(){ char c='k'。

int i=1,j=2,k=3。

float x=3e+5,y=0.85。

printf("%d,%d\n", ' a'+5<c,-i-2*j>=k+1)。

printf("%d,%d\n",1<j<5,x-5.25<=x+y)。

printf("%d,%d\n",i+j+k==-2*j,k==j==i+5)。

}1 0—提醒:从左到右运算,每步都要进行比较. __________________1< 5第二节:逻辑运算符和表达式一•逻辑运算符极其优先次序C语言中提供了三种逻辑运算符:1)&&与运算an d”2)||或运算竖线”3)!非运算叹号”与运算符&&和或运算符||均为双目运算符。

C语言程序设计:第4章 选择结构程序设计

C语言程序设计:第4章 选择结构程序设计
gt; >= == !=
作用 小于 小于等于 大于 大于等于 等于 不等于
运算数 双目 双目 双目 双目 双目 双目
结合性 左结合 左结合 左结合 左结合 左结合 左结合
优先级 10 10 10 10 9 9
2
例如:
(1) 比较整型变量k大于0,表达式为:k>0 (2) 比较考试成绩score大于等于60,表达式为:score>=60 (3) 比较整型变量k模2等于0,即判断k是否是偶数:k%2==0 (4) 比较字符变量ch的值等于'A',表达式为:ch!='A'
return 0; }
Input 2 integers(a b):100 10<回车> 100,10
Input 2 integers(a b):10 100<回车> 100,10
2.双分支if语句
if (表达式) 语句1 else 语句2
执行过程: 首先先判断表达式的值 若为非0则执行语句1 若为0则执行语句2
if语句的双分支形式,在语法上 视为一条语句。
表达式

语句1

语句2
例4-4:判断整数的奇偶性。从键盘输入一个整数x,根据其奇 偶性输出x是奇数或x是偶数。
Input an integer: 12<回车> 12 is odd number.
#include <stdio.h>
int main()
return 0;
}
例4-5:修改例3-6使用海伦公式计算三角形面积程序的要求,当输入 的三个边长能够构成三角形时,计算面积;否则,输出不能构成三角 形。
思路分析:三角形面积的计算过程与原例题相同,新要求是在“三个 边长能构成三角形”这一条件成立时才进行计算面积,否则直接输出 提示信息。根据数学知识,这一条件可以描述为“任意两个边长之和 大于第三个边长”,输入三个边长a、b、c后,条件可以使用如下的 逻辑表达式描述:

第四章----选择结构程序设计PPT课件

第四章----选择结构程序设计PPT课件

if (fabs(disc)<=1e-6) printf(“x1=x2=%7.2f\n”, -b/(2*a));
/*fabs():求绝对值库函数*/ /*输出两个相等的实根*/
else
{ if (disc>1e-6) {x1=(-b+sqrt(disc))/(2*a); /*求出两个不相等的实根*/
逻辑表达式的值也是一个逻辑值(非“真”即“假”)。
2021/4/8
7
2.逻辑量的真假判定──0和非0 C语言用整数“1”表示“逻辑真”、用“0”表示 “逻辑假”。但在判断一个数据的“真”或“假”时, 却以0和非0为根据: 如果为0,则判定为“逻辑假”; 如果为非0,则判定为“逻辑真”。 例如,假设num=12,则: !num的值=0 ,num>=1 && num<=31的值=1 , num || num>31的值=1。
2021/4/8
3
例如,假设num1=3,num2=4,num3=5,则: (1)num1>num2的值=。 (2)(num1>num2)!=num3的值=。 (3)num1<num2<num3的值。 思考题:任意改变num1或num2的值,会影响整 个表达式的值吗?为什么?
(4)(num1<num2)+num3的值=
2021/4/8
4
二、逻辑运算符
关系表达式只能描述单一条件,例如“x>=0”。如果需 要描述“x>=0”、同时“x<10”,就要借助于逻辑表达 式了。
1 逻辑运算及其优先次序
1.逻辑运算符及其运算规则
(1)C语言提供三种逻辑运算符:
&&
逻辑与(相当于“同时”)

第四章 逻辑运算和选择程序结构

第四章 逻辑运算和选择程序结构

如果用if语句的嵌套可以表示为: myDate = new Date(); myHour = myDate.getHours(); if (myHour>6) { trace("早上好"); if (myHour>12) { trace("下午好"); } else if (myHour>18) { trace("晚上好"); } } else { //sleep }
on (release) { trace(i); if (con) { i++; } else { i--; } if (i == 1) { con = true; } else if (i == j) { con = false; } } (4)测试影片,不断单击按钮,观看输出的数字。
4.3.4 if语句的嵌套 在if语句中又包含一个或多个if语句称为if语句的 嵌套。一般形式为 if(条件){ If(条件2){//程序} else{//程序2}} else if(条件3){//程序3} else{//程序4} 范例4-8:自动问候程序 (1)新建一个Flash文档。
在这段代码中,if语句中的条件有两个, 用&&运算符连接,代表两个条件都为真时, 才会执行语句中的代码。 由此可见,条件的类型一般为逻辑表达 式和关系表达式,但也可以是任意的数据类 型。这时Flash将按真处理。 范例4-4:对三个数字从小到大排序 (1)新建一个Flash文档。 (2)选中第一帧,打开“动作”面板,输入下 列代码:
这段程序中,先执行(b>c)?b:c;因为b<c,所以条件为 假,表达式(b>c)?b:c的值为c。又因为a>b不满足, 条件为假,所以t=(a>b)?a:(b>c)?b:c的值为c。最后 把c值赋给t,所以t=15。因此这段程序的作用是求a、 b、c中的最大值。 4.3.3 else-if语句 else-if语句的一般形式为 If(条件){程序1;} else if(条件2){程序2;} else if (条件3){程序3;} else {程序4;} else-if语句是这样执行的:进行条件1的判断,如果条 件1为真则执行程序1,如果条件为假则跳过程序1, 进行程序2的判断,其他的依次类推。

《C语言程序设计》第四章选择结构程序设计

《C语言程序设计》第四章选择结构程序设计


小于等于 <=
真,结果
实型、 值(整

双目 大于
>
为1,不
字符型 数1或 向
大于等于 >= 满足为假 等
0)


等于
== 结果为0
不等于 !=
2.关系运算符的优先级
● 算术运算符 优先于 关系运算符
● <,<=,>,>= 优先于 ==,!= ● <,<=,>,>= 同级,结合性是自左向右 ● ==,!=同级,结合性是自左向右
{if (year%400==0) leap=1;
else leap=0;} else
leap=1; }
运行情况如下: ①1989
else
1989 is not a leap year.
leap=0; if (leap)
②2000
printf(“%d is a leap year.\n”,year); 2000 is a leap year. else
else if(表达式3) 语句3

else if(表达式m) 语句m

else 语句n
表达式3

语句3

表达式4
真 语句4
假 语句5
例:设计程序,把学生的成绩划分为A、B、C、 D、E五个等级。如输入成绩,则输出等级。
#include <stdio.h> main() {
int score; char grade; scanf(“%d”,&score); if(score>=90) grade=‘A’; else if(score>=80) grade=‘B’; else if(score>=70) grade=‘C’; else if(score>=60) grade=‘D’; else grade=‘E’; printf(“%c\n”,grade); }

C语言程序设计:第4章 顺序结构与选择结构

C语言程序设计:第4章 顺序结构与选择结构
printf("max: %d\n",a); if(a < b)
printf("max: %d\n",b); return 0; }
#include <stdio.h> int main(void) {
int a ,b,max; printf("请输入a和b的值\n"); scanf("%d%d",&a,&b); max = a; if(max < b)
7
顺序结构:复合语句
复合语句:由大括号{}中的0个或多个声明和语句列表共同构成。
#include <stdio.h> int main(void) {
int a = 10; int b = 11;
注意: 1>复合语句不以分号;作为结束符, 即最后的}后面不加分号。 2>在复合语句中可以定义变量,但
if(score >= 60)
printf("及格\n");
else
printf("不及格\n");
return 0;
}
19
选择结构: if...else if语句
成绩等级划分: 输入自己的成绩,根据成绩的范围输出成绩等级。
成绩范围
等级
90--100
A
80--89
B
70--79
C
60--69
D
0--59
3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字 母,则把它变为大写字母;若是其他字符则不变
4.输入数字1-7,并输出显示对应的星期 (输入的数字 1 ,输出星期一,以此类推)

第4章 逻辑运算和判断选取结构

第4章 逻辑运算和判断选取结构
5
逻辑运算符和逻辑表达式
一.逻辑运算符及优先级 ! 逻辑非 ( 含义NOT) && 逻辑与(含义AND) | | 逻辑或(含义OR) 例:a>b && x>y a == b || x==y ! a | | a>b 真值表:
A T、1 F、0 B T、1 F、0 T、1 F、0 !A F、0 T、1
若c32则c为控制字符否则若c在0和9之间则c为数字字符否则若c在a和z之间则c为大写英文字母字符否则若c在a和z之间则c为小写英文字母字符否则c为其它字符逻辑运算和判断选取结构22语句语句语句includestdiohmain判别键盘输入字符的类别cgetchar
C程序设计
第4章 逻辑运算和判断选取结构 谢 军
第4章 逻辑运算和判断选取结构
if 语句
开始
读入x, y
X<y T
t =x
F 输入x,y T x<y F
x=y
y =t
t=x; x=y ; y=t;
输出 x,y
输出x,y 结束
N-S结构化流程图
流程图
16
if 语句
# include <stdio.h> main ( ) { float x,y,t ;
第4章 逻辑运算和判断选取结构
开始 读入x, y
printf("input x,y:"); scanf ( " %f %f " , &x , &y ) ; X<y if (x<y) T { t =x t = x ; x = y ; X=y y=t; } y =t printf ("result:%7.3f\t%7.3f\n",x,y); } 执行结果: input x,y :43.2 56.7 result : 56.700 43.200

第4章逻辑与选择

第4章逻辑与选择

6/83
Switch….Case……Default;
#include"stdio.h" int abc=8; void main() { switch(abc) { case 1: printf("abc=1"); break; case 2: printf("abc=2"); break; case 3: printf("abc=3"); break; default: printf("不在范围内!"); break; } }
!
A.GE.0.0 .AND. A+C .GT. B+D .OR. .NOT. .TRUE. 18/83
4.3
逻辑表达式
说明: 1)算术运算符的运算对象是数值量,运算结果为数
值; 关系运算符的运算对象是数值量,运算结果是 逻辑量;逻辑运算符的运算对象是逻辑量;运算结果 是逻辑量。
2)IF语句判别逻辑表达式的值是否为‚真‛。如果L
END
.2. 30/83
4.4 用IF块实现选择结构
Read(*,*) CJ
IF (条件) THEN ELSE (ELSE块) ENDIF
IF (CJ.GE.60.0) Then ELSE Write(*,*) ‘成绩不及格’ ENDIF END
.3. 31/83
4.4 用IF块实现选择结构
Read(*,*) CJ
23/83
一行多个语句 时,语句之间 用分号隔开即 可。
24/83
IF (条件) THEN then 块 ELSE else 块
IF (条件) THEN
(THEN块)
ENDIF
.1. .2.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

反之亦然!
逻辑或操作符||
逻辑或操作符||表示“或者”的关系。 a和b只要有一个为真时a || b的值就为真为1,只有a和
b同时为假时,a || b的值才为假为0。
例4-2 用C表达式表示结论“变 量a的绝对值大于5”。
分析:当|a| > 5时有a > 5或者a < -5, 因此相应的C表达式为(a > 5) || (a < -5),当然也可用
大小由其ASCII码的值决定。
3 -5u中-5u为无符号数,故3 -5u的类型也为无符号数。3 -5u不可能等于0,因此大于0,即3 -5u > 0的值为1即真。 -5u即-5先用补码表示再被看做无符号数,两个正数相加的 结果当然不会小于0)。 能用printf函数输出值的方式判断结果是否大于0吗? printf(“?”,3-5u);
== 0 && n % 3 == 0 || n % 7 == 0。(等价于n % 6 ==
0 || n % 7 == 0) (2)x、y中至少有一个小于z 也就是x小于z或者y小于 z,相应的逻辑表达式为x < z || y < z。
分析:
(3) x、y中只有一个小于z,也就是只有x小于z或者 只有y小于z,当只有x小于z时有x小于z且y不小于z,相应
式求值,再由操作符的优先级可知,原表达式等价于((a
= 0) && (a = 5)) || (a += 1)。由于a = 0的值为0,故 子表达式(a = 0) && (a = 5)的值也为0即假,且子表达 式a = 5不会被求值。原表达式变为0 || (a += 1),此时 显然要继续对a += 1求值,求值后变量a的值变为1,结果
例4-3用逻辑表达式表示下面的 结论
1.整型变量n是2、3的公倍数或者是7的倍数 2.整型变量x、y、z中x、y至少有一个小于z
3.整型变量x、y、z中x、y只有一个小于z
4.长度为a、b、c的三边可以构成一个三角形
分析:
(1)n是2、3的公倍数即n是2的倍数,且还是3的倍数, 可表示为(a % 2 == 0 && n % 3 == 0)。n或者又是7的 倍数,则整个表达式为(a % 2 == 0 && n % 3 == 0) || n % 7 == 0。表达式中的括号仅为了提高可读性,由 逻辑操作符的优先级可知该逻辑表达式可直接写作a % 2
return
4.3.1 if结构的作用
编程时常需根据一定的条件有选择的执行一些C语句。 如编写求绝对值的程序时,要考虑用户的输入(f)是
否为负数(f<0),若为负数(真),则绝对值为输入数
的相反数(f = -f)。程序执行时语句f = -f;是否执行 显然与表达式f < 0的值相关。 C语言中用if结构来处理这种情况。
4.2.2 逻辑表达式求值
4.3 简单的if结构
4.3.1 if结构的作用 4.3.2 if结构的语法
4.4 if-else结构
4.4.1 if-else结构的形式与用法
“真”和“假”的编码
C语言中用“0”表示“假”,不为“0”的所有值都被认为是 “真”。
被认为是“假”的“0”可能是整数0,浮点数0也可能是
的逻辑表达式为(x < z && y >= z) || (y < z &&
x >= z)。 (4)构成三角形的三边应满足任意两边之和大于第三 边的条件,这里的“任意”显然是“并且”的关系。相应 的逻辑表达式为a + b > c && a + c > b && b
+ c > a。
return
4.2.2逻辑表达式求值
反映这种关系,即C语言中表达式(x > 99) && (x < 1000)
与代数式99 < x < 1000等价。 逻辑运算符的操作数是逻辑量,而逻辑量只有真和假两 个值,因此常用穷举法来说明逻辑操作符的运算规则,即 所谓的真值表。
表4-1为逻辑与&&的真值表
代数式99 < x < 1000 < 1000)
例4.1 关系表达式求值
(3) a % 2 != 0 (4) 99 < x < 1000 x为2523
(3)当a为奇数时,a % 2值为1,表达式a % 2 != 0的值也为1
即真,当a为偶数时,a % 2值为0,表达式a % 2 != 0的值也
为0即假,显然关系表达式a % 2 != 0用于判断变量a是否为奇 数。 (4) 操作符<是左结合,故表达式99 < x < 1000等价于
(99 < x)< 1000, x为2523时,子表达式99 < x为真即值为1,
原表达式变为1 < 1000,它的值为1即真,因此99 < x < 1000
的值为1即真。
return
4.2.1 逻辑操作符
对于代数式99 < x < 1000,只有99 < x和x < 1000同 时为真时它的值才为真。C语言中的逻辑与操作符&&可以
新编C语言程序设计教程
清华大学出版社
周二强
zeq@
软件学院
计算机科学与工程系
配套视频: 博客:/stunt
第4章逻辑运算和选择结构程序
“用户输入的数是否为三位的正整数?” “变量a是否为正数?”
这类问题的答案只有两个:“是”或者“否”。
先假设一个“结论”,如“变量a是正数”或者“变量a
不是正数”,然后根据事实对结论进行判断从而得到一个
或为真或为假的值。 对结论进行判断,并得出一个或为真或为假的值的过程 也是一种运算即逻辑运算。
第4章逻辑运算和选择结构程序
4.1 关系操作符和关系表达式 4.2 逻辑操作符和逻辑表达式
4.2.1 逻辑操作符
例4-6 求绝对值
程序4-6的流程图
开始
输入 f 输出 f
F
f < 0
T
f = -f
输出f的绝对值
结束
选择结构程序
因为程序中包含了选择结构而有 了多种可执行路径的程序称为选择 结构程序。 只有一种可执行路径的程序称为 顺序结构的程序。顺序结构的程序
开始 输入 f 输出 f
F
执行时自上而下,依次执行每条语
逻辑操作符的优先级
逻辑与&&和逻辑非||的优先级低于关系操作符即先求 (逻辑)值再(逻辑)运算,而逻辑与&&的优先级又高于
逻辑或||的优先级。单目操作符的优先级都比较高,逻辑
非!的优先级不仅高于关系操作符,而且还高于算术运算 符。 本节相关的逻辑表达式也可写作:x > 99 && x < 1000, x > 5 || x < -5, !(a > 5 || a < -5)和 a <= 5 && a
>= -5。
切记值的双重含义
切记C语言中一个值既是逻辑量又是普通的数值,在进 行逻辑运算时要把操作数看作逻辑量;在进行算术运算时
要把操作数理解为普通的数值。
如表达式!'a' * 2.3求值时, 先计算子表达式!'a'的值,'a'非0为真则!'a'的值为假 为0,原表达式变为0 * 2.3,值为0.0也即假。
作符中前4种的优先级相同,后2种也相同,并且前4种高 于后2种。 关系操作符的优先级低于算术运算符(先求值再关系运 算)高于赋值操作符(赋值操作符的优先级仅比逗号操作
符的优先级高)。
例4.1 关系表达式求值
(1)'A' > 'Z' (2) 3 -5u > 0
字符型数据在比较大小时通常被看作整型,字符型数据的
分析
表达式'a' || (a = 1) && (a += 2)中逻辑与&&的优先 级高于逻辑或||的,通常应先计算子表达式(a = 1) && (a = 2)的值,但是,逻辑或||处有序列点,表达式求值 时应先考虑序列点再考虑优先级。序列点的存在使得子表 达式'a'应先于后面的子表达式求值,因此原表达式等价于
也为1即真,故原表达式的值为1即真。
注意:
使用赋值表达式“客串”逻辑量只是为了直观地分析逻 辑表达式的求值过程,实际的程序中不应该也不必出现类
似的表达式。
此外,在应该出现逻辑量的地方,关系表达式a % 2 != 0显然要比等价的算术表达式a % 2有更好的可读性。 由于关系表达式的值为逻辑量1(真)或0(假),因此 有时也称关系表达式为逻辑表达式。

逻辑表达式(x > 99) && (x
当代数式99 < x < 1000成立时, x > 99为真且x < 1000也
为真,由真值表可知此时逻辑表达式(x > 99) && (x <
1000)的值为真为1。
表4-1为逻辑与&&的真值表
当代数式99 < x < 1000不成立时,则x > 99和x < 1000至少 有一个为假,由真值表可知此时逻辑表达式(x > 99) && (x < 1000)的值也为假为0。
if结构的形式
if(表达式) 语句
其中,if为C语言关键字,括号中的表达式通常为逻辑表达式, 即使此处出现了其它类型的表达式,表达式的值也会被认为是 逻辑量(即0为假,非0为真);语句为任意的单条C语言语句;
相关文档
最新文档