ImageVerifierCode 换一换
格式:PPT , 页数:76 ,大小:505.91KB ,
文档编号:4688070      下载积分:28 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-4688070.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(C语言课件-第3章.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

C语言课件-第3章.ppt

1、第 3章 表 达 式 第第 3章章 表表 达达 式式 3.1 表达式基础表达式基础 3.2 算术表达式算术表达式 3.3 赋值表达式赋值表达式 3.4 逻辑表达式逻辑表达式 3.5 位运算表达式位运算表达式 3.6 其它表达式其它表达式 习习 题题 三三第 3章 表 达 式 3.1 表达式基础表达式基础 3.1.1 表达式的组成表达式的组成 1运算符 运算符又称操作符,是一个符号,它指示在一个或多个操作数上完成某种运算操作或动作。C语言中,将除了输入、输出及程序流程控制操作以外的所有基本操作都作为运算处理,如赋值运算“=”、逗号运算“,”、括号运算“()”。C语言的运算符按完成的运算操作可分为

2、算术运算符、关系运算符、逻辑运算符、赋值运算符与其它运算符等,按参与运算符的操作数个数可分为单目运算符、双目运算符与三目运算符。第 3章 表 达 式 (1)算术运算符:+、*、/、%、+、(2)关系运算符:、=。(3)逻辑运算符:!、&、|。(4)位运算符:、|、&。(5)赋值运算符:=、+=、=、*=、/=、%=。(6)条件运算符:?:。(7)逗号运算符:,。(8)指针运算符:*、&。(9)求字节数运算符:sizeof。(10)强制类型转换运算符:(类型)。(11)其它运算符;、()、等。第 3章 表 达 式 2.操作数操作数 操作数是运算符的操作对象,可以是常量、变量、函数与表达式。常量、

3、变量、函数本身就是简单表达式,从一般意义上讲,C语言中所有操作数都是表达式。复杂表达式由运算符连接简单表达式形成。第 3章 表 达 式 3.1.2 表达式的书写表达式的书写 C语言的表达式虽然来源于数学表达式,是数学表达式在计算机中的表示,但在书写时应该注意遵循C语言表达式书写的原则:(1)C语言的表达式只能采用线性的形式书写。例如:应写成1/3+i+j*j*j。应写成(a+b)/(c+d)*e+f。331ji fedcba第 3章 表 达 式 (2)C语言的表达式只能使用C语言中合法的运算符和操作数,对有些操作必须调用库函数完成,而且运算符不能省略。例如:r2应写成3.14159*r*r。应

4、写成0.5*a*b*sin(alph)。|xy|应写成fabs(xy)。y+2X 应写成y+pow(2,x)。aabsin21第 3章 表 达 式 3.1.3 表达式的分类表达式的分类 C语言表达式种类很多,有多种分类方法。我们一般依据运算的特征将表达式分为:算术表达式,如a+b*2.0-3.0/5.0。关系表达式,如x=y,关系表达式可以认为是逻辑表达式的特殊情况。逻辑表达式,如(x=2)&(xb)?a:b。逗号表达式,如a=2,b=a*a,c=sqrt(b)。第 3章 表 达 式 1运算的优先级 运算的优先级是指运算执行的先后顺序。C语言将运算的优先级划分为15级,第1级优先级最高,第15

5、级优先级最低。初等运算()、的优先级最高;单目运算!、+、(类型)、*、&、sizeof的优先级次高;算术运算+、*、/、%再次之;然后是关系运算、=;再然后是逻辑运算&、|,条件运算式?:,赋值运算=、+=、=、*=、/=、%=;第 3章 表 达 式 逗号运算优先级最低;位运算优先级比较分散。可将优先级顺序简单记忆为算术、关系和逻辑,移位、位逻辑在中间。请参阅附录B。表达式求值时按运算的优先级别从高到低顺序进行,优先级相同的运算顺序由运算的结合性规定。通过圆括号运算可以改变运算的优先顺序,先圆括号内,后圆括号外。第 3章 表 达 式 2.运算符的结合性运算符的结合性 运算符的结合性是指,优先

6、级相同的运算从左到右进行(左结合性)还是从右至左进行(右结合性),左结合性是人们习惯的计算顺序。C语言中,只有单目运算(!、+、-、-、*、&)、条件运算(?:)、赋值运算(=、+=、-=、*=、/=、%=)的结合性是右结合,其余运算为左结合。第 3章 表 达 式 3类型转换类型转换 一般地,相应的运算只有相应类型的数据才能进行,不同类型数据进行运算时,要进行类型转换。类型转换有自动转换与强制转换两种方式。1)自动转换 自动转换(又称隐含转换)由系统自动完成,转换的规则如图3-1所示。第 3章 表 达 式 图3-1中,横向箭头方向表示必定要进行的转换,即short型、char型数据必定先转换成

7、int型,float型数据必定先转换为double型,再进行运算。纵向箭头方向表示类型自动转换的方向,请注意转换的方向是由低向高转换的,int型最低,double型最高。int型与unsigned型数据进行运算,int型转换成unsigned型;int型与long 型数据进行运算,int型转换成long型;int型与double型数据进行运算,int型转换成double型。其它类推。这种转换是一种保值映射,在转换中数据的精度不受损失。第 3章 表 达 式 图3-1 类型自动转换规则 高低doublelongunsignedintfloatchar、short第 3章 表 达 式 2)强制转换

8、强制类型转换通过类型转换运算完成。格式:(类型名)(表达式)强制转换将表达式的类型强制转换成类型名指定的类型。例如x、y为float,则(int)(x+y)将实型表达式x+y强制转换成整型。值得注意的是,强制类型转换在将高类型转换为低类型时,数据精度会有损失,是一种不安全的转换。同时强制类型转换是一次性的、暂时性的,并不能永久改变所转换表达式的类型。例如a为int,则(double)a为双精度型,a依然为整型。第 3章 表 达 式 例3 1 表达式计算。(1)float x=2.5,y=4.7;int a=7;计算x+a%3*(int)(x+y)%2/4 a%3等于1。x+y等于7.2。(in

9、t)(x+y)等于7。a%3*(int)(x+y)等于7。a%3*(int)(x+y)%2等于1。a%3*(int)(x+y)%2/4等于0。x+a%3*(int)(x+y)%2/4等于2.5+0,结果为2.5。第 3章 表 达 式(2)int a=2,b=3;float x=3.5,y=2.5;计算(float)(a+b)/2 +(int)x%(int)y a+b等于5。(float)(a+b)等于5.0,强制转换成float型。(float)(a+b)/2等于5.0/2.0,结果为2.5。(int)x等于3,强制转换成int型。(int)y等于2,强制转换成int型。(int)x%(int

10、)y等于1。(float)(a+b)/2+(int)x%(int)y等于2.5+1.0,结果为3.5(双精度型)。第 3章 表 达 式(3)int i=3;float f=1.0;double d=2.3;计算 10+a+i*f-d a转换成97,10+a等于107。i,f转换成双精度型,i*f等于3.0。107转换成双精度型,10+a+i*f等于110.0。10+a+i*f-d等于107.7。第 3章 表 达 式 3.2 算术表达式算术表达式 1自增运算 自增运算符:+。自增运算是单目运算,操作数只能是整型变量,有前置、后置两种方式:+i,在使用i之前,先使i的值增加1,俗称先增后用。i+,

11、先使用i的值,然后使i的值增加1,俗称先用后增。第 3章 表 达 式 例如:i=1999;j=+i;/*先将i的值增1,变为2000后赋给j,j的值也为2000*/j=i+;/*先将i的值赋给j,j的值为1999。然后将i的值增1,变为2000*/自增运算的优先级处于第2级,具右结合性。第 3章 表 达 式 2.自减运算自减运算 自减运算符:-自减运算与自增运算一样也是单目运算,操作数也只能是整型变量。同样有前置、后置两种方式:-i,在使用i 之前,先使i 的值减1,俗称先减后用。i-,先使用i 的值,然后使i 的值减1,俗称先用后减。第 3章 表 达 式 如:i=2000;j=-i;/*先减

12、,将i 的值减1,变为1999。后使用,j的值也为1999*/j=i-;/*先使用,j的值为2000。后减,将i 的值减1,i的值变为1999*/自减运算的优先级、结合性同自增运算。第 3章 表 达 式 请特别注意:(1)自增、自减运算只能用于变量,不能用于常量或表达式。(2)自增、自减运算比等价的赋值语句生成的目标代码更高效。(3)自增、自减运算常用于循环语句中,使循环控制变量自动加或减1;还可用于指针变量,使指针指向下一个或上一个地址。第 3章 表 达 式 (4)表达式中包含有自增、自减运算时,特别容易出错,务请小心。例如,i=1,(+i)+(+i)+(+i)的值为多少呢?可能计算出是9(

13、=2+3+4),其实这是错误的。实际上计算时先对整个表达式扫描,i 先自增3次,由1234,因此计算结果应为12(=4+4+4)。(i+)+(i+)+(i+)的值又是多少呢?分析同上,应为3,当然表达式计算完成后i的值同样改变为4。第 3章 表 达 式 3运算符的组合问题 C语言的运算符一般为一个字符,有的由两个字符组成。在表达式中出现多个字符时如何组合呢?C编译系统在处理时,原则上尽可能自左至右将若干字符组合成一个运算符。如将i+j解释为(i+)+j,而不是i+(+j)。如要表示i+(+j),必须加括号。标识符、关键字也按同样的原则进行处理。第 3章 表 达 式 例例3 2 自增自减运算。/

14、*程序3-2,自增自减运算*/include stdio.hmain()int i,j;i=j=5;printf(i+=%d,j=%dn,i+,j);printf(+i=%d,j=%dn,+i,j);printf(i+=%d,j=%dn,i+,j);printf(+i=%d,j=%dn,+i,j);printf(i=%d,j=%dn,i,j);第 3章 表 达 式 运行结果:i+=5,j=5+i=7,j=3i+=7,j=3+i=9,j=1i=9,j=1 第 3章 表 达 式 3.3 赋值表达式赋值表达式 3.3.1 赋值运算赋值运算 赋值运算符:=。赋值运算是双目运算,一个操作数为变量,另一个

15、操作数为表达式。赋值运算符左边的操作数只能是变量,右边可以是表达式。进行赋值运算时先计算右边表达式的值,然后将右边表达式的值赋给左边变量,即送给左边变量对应的存储单元,并以此作为整个赋值表达式的值。例如i为int,i=3+5%2,则先计算右边表达式3+5%2的值,得到4,然后将4 赋给左边变量i。第 3章 表 达 式 说明:(1)赋值运算的优先级为第14级,具有右结合性。(2)赋值运算中的表达式最简单的形式是一个常量,这时变量得到一个初值。例如:int i;float x;char ch;i=100;x=12.345;ch=A;第 3章 表 达 式 (3)赋值运算中的表达式又可以是赋值表达式,

16、如此可辗转赋值。例如:int x,y,z;x=y=z=0.0,相当于x=(y=(z=0.0),即x、y、z都得到值0.0。(4)赋值运算符“=”不同于数学中的等号。例如,i=i+1在数学中绝对不成立,但在C语言中肯定成立,其含义是将i 的当前值加上1再赋给i。第 3章 表 达 式 3.3.2 赋值类型转换赋值类型转换 在进行赋值运算时,一般要求赋值运算符两侧操作数的类型相同或相容。如果赋值运算符两侧操作数的类型不一致,要进行类型转换。赋值运算时的类型转换以赋值运算左边操作数的类型为主体进行。(1)将实型数据赋给整型变量时,舍弃实数的小数部分。例如i为int,若有i=1.23,则i的值为1。(2

17、)将整型数据赋给单、双精度型变量时,数值大小不变,但以浮点形式存储到变量中。第 3章 表 达 式 (3)字符型数据赋给整型变量时,由于字符数据只占一个字节,而整型变量为2个字节,因此将字符型数据放在整型变量的低8位中,而对整型变量的高8位要进行扩充。(4)将基本整型数据赋给长整型变量时,基本整型数据放在长整型变量的低16位,高16位用符号位扩充。反之,将长整型数据赋给基本整型变量时,只将长整型数据的低16位送给基本整型变量。第 3章 表 达 式 int i=1;long int j;j=i;i 的二进制形式:0000000000000001 j 的二进制形式:00000000000000000

18、000000000000001 int i=1;long int j;j=i;i的二进制形式:1111111111111111 j的二进制形式:11111111111111111111111111111111 第 3章 表 达 式 long int i=1;int j;j=i;i的二进制形式:11111111111111111111111111111111 j的二进制形式:1111111111111111 第 3章 表 达 式 (5)将无符号整型数据赋给长整型变量时,不存在符号位扩展的问题,只需将高位补0即可。将无符号整型数据赋给一个占字节数相同的整型变量时,将无符号整型数据原样送整型变量中,

19、并将最高位当作符号位,如果数据超出相应的整型范围,将产生数据错误。如果将整型数据赋给占字节数相同的无符号整型变量时,也是原样照赋,最高位作数值处理。第 3章 表 达 式 例如:unsigned int i=65 535;int j;j=i;/*j的值为1*/int i=1;unsigned int j;j=i;/*j 的值为65 535*/第 3章 表 达 式 3.3.3 复合赋值运算复合赋值运算 在基本赋值运算符“=”之前加上任一双目算术运算符及位运算符可构成复合赋值运算符,又称带运算的赋值运算符。算术复合赋值运算符:+=、=、*=、/=、%=位复合赋值运算符:&=、|=、=、=、=一般形式

20、:变量=表达式 等价于:变量=变量表达式 代表任一双目算术运算符或位运算符。复合赋值运算先进行所带运算,再进行赋值运算。复合赋值运算的优先级同赋值运算。第 3章 表 达 式 例如:int a=3;a+=2等价于a=a+2,结果为5。float x=1.2,y=2.1;y*=x+3.4等价于y=y*(x+3.4),结果为9.66。int a=3,b=2;b/=a+=1等价于b=b/(a=a+1),结果为0。第 3章 表 达 式 例3-3 赋值运算。/*程序3-3,赋值运算*/#include stdio.hmain()int i,j;float x,y;i=j=1;x=y=1.1;printf(

21、i=%d,j=%dn,i,j);第 3章 表 达 式 x=i+j;y+=1;printf(x=%4.2f,y=%4.2fn,x,y);i=i+j;x=2*x+y;printf(i=%d,x=%4.2f n,i,x);运行结果:i=1,j=1x=2.00,y=2.10i=3,x=6.10 第 3章 表 达 式 printf(x=%4.2f,y=%4.2fn,x,y);i=i+j;x=2*x+y;printf(i=%d,x=%4.2f n,i,x);运行结果:i=1,j=1x=2.00,y=2.10i=2,x=6.10 第 3章 表 达 式 3.4 逻辑表达式逻辑表达式 3.4.1 关系表达式关系

22、表达式 关系表达式是逻辑表达式中的一种特殊情况,关系表达式由关系运算符和操作数组成,关系运算用于完成数的比较运算。关系运算有、=,、=的优先级相同,=、!=的优先级相同,前者的优先级高于后者。关系运算符的优先级低于算术运算,高于逻辑运算&、|,也高于赋值运算。第 3章 表 达 式 3.4.2 逻辑表达式逻辑表达式 逻辑表达式由逻辑运算符和操作数组成,逻辑表达式用于程序设计中的条件描述。逻辑表达式中操作数可以是逻辑量和关系表达式。C语言有!、&、三种逻辑运算,运算规则在上章已作介绍。!运算的优先级高于算术运算,&运算的优先级高于运算,&、运算的优先级低于关系运算,高于赋值运算。第 3章 表 达

23、式 在计算逻辑表达式时务请注意:&和是一种短路运算。所谓短路运算,是指在计算的过程中,只要表达式的值能确定,便不再计算下去。逻辑与运算时,计算到某个操作数为假,可以确定整个表达式的值为假时,剩余的表达式部分便不再计算。逻辑或运算时,计算到某个操作数为真,可以确定整个表达式的值为真时,剩余的表达式部分便不再计算。第 3章 表 达 式 例如:e1&e2&e3,若e1为0,可确定表达式的值为0,则不再计算e2、e3。e1e2e3,若e1为真,则可确定表达式的值为真,也不再计算e2、e3。第 3章 表 达 式 例例 3 4 用逻辑表达式描述下列条件:(1)x是 3 的倍数。x%3=0(2)x是偶数。x

24、%2=0(3)x是 3 的倍数且x是偶数。(x%3=0)&(x%2=0)(4)100 x100)&(x200)第 3章 表 达 式 (5)x等于2或8。(x=2)|(x=8)(6)三位数x是回文数:x/100=x%10(7)a、b、c为三边,它们构成等边三角形的条件:(a=b)&(b=c)(8)某年是闰年:(year%4=0)&(year%100!=0)(year%400=0)第 3章 表 达 式 3.5 位运算表达式位运算表达式 3.5.1 位逻辑运算位逻辑运算 1按位取反运算 运算符:。按位取反运算用来对一个二进制数按位取反,即0位变1,1位变0。例如,计算25。25的二进制表示为:000

25、0000000011001。按位取反的结果为:1111111111100110,即26。第 3章 表 达 式 运算常用于产生一些特殊的数。如高8位全1、低8位全0的数0 xFF00,按位取反后变为0 x00FF。1,在16位与32位的系统中,都代表只有最低位为0的整数。运算是位运算中惟一的单目运算,也是惟一具有右结合性的位运算。第 3章 表 达 式 2按位与运算按位与运算 运算符:&。按位与运算的规则是操作数的对应位为1,则该位的运算结果为1,否则为0。例如,计算0 x29&0 x37。0 x29与0 x37的二进制表示为:0000000000101001与0000000000110111。按

26、位与的结果为:00000000000100001,即0 x21。按位与运算的主要用途是清零及取数的某些位或保留数的某些位。第 3章 表 达 式 例如:a&0,将a清0。a&0 xFF00,取数a的高8位,低8位清0。a&0 x00FF,取数a的低8位,高8位清0。第 3章 表 达 式 3.按位或运算按位或运算 运算符:|按位或运算的规则是操作数的对应位都为 0,则该位的运算结果为 0,否则为 1。例如:0 x29|0 x37,0 x29 与 0 x37 的二进制表示为:0000000000101001与0000000000110111 按位或结果为:0000000000111111,即等于 0

27、 x3f。利用|运算可将数的部分位或所有位置 1。第 3章 表 达 式 例如:(1)a|0 x000F,a的低 4 位全置 1,其它位保留。(2)a|0 xFFFF,a的每一位全置 1。第 3章 表 达 式 4.按位异或运算按位异或运算 运算符:按位异或运算的规则是操作数的对应位相同,则该位的运算结果为 0,否则为 1。例如:0 x290 x37,0 x29 与 0 x37 的二进制表示为:0000000000101001与0000000000110111 按位异或结果为:0000000000011110,即等于 0 x1e。利用运算将数的特定位翻转,保留原值,不用临时变量交换两个变量的值。第

28、 3章 表 达 式 例如:(1)a0 x00FF,将数a的低 8 位翻转,高 8 位不变。(2)a0,保留数a的原值。(3)a=ab,b=ba,a=ab,不用临时变量交换a,b的值。位逻辑运算自身的优先级由高到低依次是、&、|、,在整个运算体系中运算的优先级位于第二级,&、|、运算低于关系运算,高于逻辑运算。位逻辑运算意义与逻辑运算一样,但位逻辑运算对二进制位而言,且必须对数的所有二进制位进行,而且操作数只能为整数。如果参与运算的数据长度不同,将对短的数据先进行高位符号扩展后再进行位运算。第 3章 表 达 式 3.5.2 移位运算移位运算 1.左移位运算左移位运算 运算符:左移位运算的左操作数

29、是要进行移位的整数,右操作数是要移的位数。左移位运算规则是高位左移后溢出,舍弃,空出的低位补0。例如,计算15。右移位运算规则是低位右移后被舍弃,空出的左边高位对无符号数移入0,对有符号数,如果是正数,则空出的左边高位移入0,如果是负数,则左边移入0还是1,要取决于所用的编译系统,有的移入0(逻辑右移),有的移入1(算术右移)。例如,152,右移2位,等于0000000000000011,即3。第 3章 表 达 式 右移一位相当于将该数除以2,右移两位相当于将该数除以4(22)。使用右移位运算可以快速实现除2运算。移位运算的优先级低于算术运算,高于关系运算。所有位运算也可与赋值运算组合成复合赋

30、值运算:&=、|=、=、=,请参阅赋值运算。第 3章 表 达 式 例例 3 5 取一个整数a的从右端开始的 47 位。/*程序 3 5,取一个整数a的从右端开始的 47 位*/include stdio.hmain()unsigned a,b,c,d;scanf(%o,&a);/*八进制形式输入*/b=a4;/*a右移4位*/c=(0b?a:b表示若a大于b,则表达式的值为a;若a小于b,则表达式的值为b。实际上是求a、b的最大值。a0?a:a表示若a大于0,则表达式的值为a;若a小于等于0,则表达式的值为a。实际上是求a的绝对值。条件运算的优先级为倒数第三级,高于赋值运算和逗号运算,低于逻辑

31、运算,具有右结合性。如ab?a:cd?c:d,相当于ab?a:(cd?c:d)。第 3章 表 达 式 例例 3 6 判断整数的正负。/*程序3 6,判断整数的正负*/include stdio.hmain()int x;scanf(%d,&x);x0?printf(%s,正数):printf(%c,负数);第 3章 表 达 式 3.6.2 逗号表达式逗号表达式 逗号表达式由逗号运算符和操作数组成,用以将多个表达式连接成一个表达式。逗号运算符:,。逗号运算是双目运算。其简单形式为:表达式1,表达式2 逗号运算的规则为先计算表达式1,再计算表达式2,并以此作为整个表达式的值。例如,计算a=2,a*

32、6的值。先计算表达式a=2,再计算表达式a*6,并以此作为整个表达式的值,因此该表达式的值为12。第 3章 表 达 式 逗号运算的优先级最低,具有左结合性。逗号表达式的更一般使用形式为:表达式1,表达式2,表达式3,表达式n这时的运算规则是先计算表达式1,再计算表达式2,再计算表达式3,再计算表达式n的值,并以此作为整个表达式的值。所以逗号运算又称为顺序求值运算。例如:x=a=3,6*x,6*a,a+x的值为6。第 3章 表 达 式 3.6.3 其它运算其它运算 1.取地址运算取地址运算 运算符:&取地址运算是单目运算,操作数只能是变量,得到变量的地址。C语言程序设计中许多场合要使用到地址数据

33、。如输入函数scanf(),输入参数就要求是地址表,将读入的数据送变量对应的存储单元中。取地址运算的优先级次高。C语言还提供一个指针运算“*”,用于取存储单元的内容.第 3章 表 达 式 2.求字节数运算求字节数运算 运算符:sizeof 求字节数运算是单目运算,操作数可以是类型名,也可以是变量、表达式,用以求得相应类型或数据所占的字节数。此运算的优先级与取地址运算优先级相同。第 3章 表 达 式 例3-7 计算各种类型数据的存储字节数。/*程序3-7,计算各种类型数据的存储字节数*/#include stdio.hmain()clrscr();printf(sizeof(int)=%dbyt

34、en,sizeof(int);printf(sizeof(long int)=%dbyten,sizeof(long int);printf(sizeof(short int)=%dbyten,sizeof(short int);printf(sizeof(unsigned int)=%dbyten,sizeof(unsigned int);printf(sizeof(unsigned long int)=%dbyten,sizeof(unsigned long int);printf(sizeof(float)=%dbyten,sizeof(float);printf(sizeof(doub

35、le)=%dbyten,sizeof(double);printf(sizeof(char)=%dbyten,sizeof(char);第 3章 表 达 式 3.括号运算括号运算 在其它语言中括号是某些语法成分的描述方式,C语言将括号亦作为运算处理。(1)圆括号运算():用于改变运算的优先级,还用于将函数的参数与函数名相分离。(2)中括号运算 :又称下标运算,用来得到数组的分量下标变量。括号运算的优先级处于最高一级。第 3章 表 达 式 习习 题题 三三 1简述C语言表达式的书写原则。2简述C语言运算的优先级与结合性。3简述表达式计算时数据类型的自动转换规则。4简述表达式计算时数据类型的强制转

36、换方法。第 3章 表 达 式 5将下列数学表达式书写成C语言表达式。(1)ax2+bx+c (2)(3)(4)(5)ln(x+sin2x+cos3x)(6)r2 h1+r2 h2)yxxy(21221sin2xxxxxcbaxcossin x第 3章 表 达 式 6将下列条件用C语言逻辑表达式描述。(1)i是j的倍数。(2)k是奇数且是3的倍数。(3)点(x+y)在以原点为圆心,r为半径的圆上。(4)C语言考试成绩cj高于60分,低于70分。(5)三个数x、y、z互不相等。(6)以a、b、c为三边构成三角形的条件。(7)方程ax2+bx+c=0有实根。(8)四位的整数x是回文数。第 3章 表

37、达 式 7已知变量有如下的定义:float x=20.5;int y=12,z=8;计算下列表达式的值。(1)(int)x+y+z (2)x+y%3%2 (3)y%=z%=5 (4)x*(y+=z)(5)y+=y=y*=y (6)x+y+z,x+y,x (7)x*=y,x/=y,y (8)z=+y+(+y)+(+y)第 3章 表 达 式 8已知变量有如下的定义:int a=3,b=4,c=5;计算下列表达式的值。(1)a+bc&b=c (2)ab+c&bc (3)!(ab)&!c4 (4)!(x=a)&(y=b)(5)!(a+b)+c1&b+c/2 (6)a+b&b+cc+a 第 3章 表 达

38、 式 9已知变量有如下的定义:int a=12;计算下列表达式的值。(1)a (2)a&0 xF0F0 (3)a|0 xF0F0 (4)a 0 xFF00 第 3章 表 达 式 10阅读下面的程序,给出程序的运行结果。#include stdio.hmain()int x,y,z;x=2;y=x+2;printf(x=%d,y=%dn,x,y);x*=y=z=4;printf(x=%d,y=%d,z=%dn,x,y);x=y=z;printf(x=%d,y=%dn,x,y);第 3章 表 达 式 11编写程序,求三个数的和、积以及平均值。12a=5,b=10,编写程序计算(a+b)/(ab)的值。13a=b=1,编写程序计算a=b、+a+b和a&b的值。14x=3,y=4,z=5,编写程序计算以下表达式的值:z)2zyx(*y)2zyx(*x)2zyx(*)2zyx(第 3章 表 达 式 15a=1,b=2,c=1,编写程序计算以下表达式的值:(1)(b+)/2a。(2)(b )/2a。16i=12,编写程序验证:(1)i*4与i2结果相同。4acb24acb2

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|