第3章数据类型、运算符、表达式.ppt

上传人:sccc 文档编号:5897483 上传时间:2023-08-31 格式:PPT 页数:97 大小:856.04KB
返回 下载 相关 举报
第3章数据类型、运算符、表达式.ppt_第1页
第1页 / 共97页
第3章数据类型、运算符、表达式.ppt_第2页
第2页 / 共97页
第3章数据类型、运算符、表达式.ppt_第3页
第3页 / 共97页
第3章数据类型、运算符、表达式.ppt_第4页
第4页 / 共97页
第3章数据类型、运算符、表达式.ppt_第5页
第5页 / 共97页
点击查看更多>>
资源描述

《第3章数据类型、运算符、表达式.ppt》由会员分享,可在线阅读,更多相关《第3章数据类型、运算符、表达式.ppt(97页珍藏版)》请在三一办公上搜索。

1、第三章数据类型、运算符、表达式,数据类型分类,数据类型,基本类型,整型,实型,字符型,枚举类型,双精度,单精度,构造类型,指针类型,空类型,数组类型,共同体类型,结构体类型,常量,常量:在程序运行过程中,其值不能被改变的量。习惯上,符号常量名用大写,变量用小写,以示区别,符号常量:代表常量的标识符(符号)符号常量在程序开头定义,并且在程序中不可以改变值。只可以在定义处修改,并且所有要替代处都做出相应的修改。习惯上符号常量用大写字符。,例:求园面积,#define PI 3.14main()float r,s;r=2;s=PI*r*r;printf(s=%f,s);,EXP0301.C,变量,变

2、量:在程序运行过程中,其值可以被改变的量。变量在内存中占据一定的存储单元。变量类型决定存储单元的大小。变量名表示存储单元的值(该值在程序运行过程中可能随时变化)。,i,int i;i=9;,?,9,int a,b,c;a=123;b=456;c=a+b;,123,456,579,标识符,变量用标识符表示,即变量的名字。标识符的要求:以字母、数字、下划线组成且第一个字符必须为字母或下划线一般长度取8个字符(建议,不同系统)关键字不能作为标示符,合法&不合法标识符,sum$123 intclass day#33month 3D64 student_namemain _above ablotus_1

3、_23 basic M.D.Jhon,int_a average _123,合法&不合法标识符,sum$123 intclass day#33month 3D64 student_namemain _above ablotus_1_23 basic M.D.Jhonint_a average _123,对所有要使用的变量必须定义,每一变量属于一个类型。int a;float a;,大写字母和小写字母被认为是两个不同的字符。int sum,SUM;习惯上,变量名用小写字母表示符号常量习惯上用大写字母标识。,程序设计中变量的命名:必须满足C语言的语法规定。应该“见其名,知其意”,容易理解,方便阅读

4、程序。int sum;float average,area;,一定要先定义、后使用!,编译程序不能翻译未定义变量。没有开辟空间,把数据放到哪里去?编译程序在编译时根据变量类型确定存储单元的数量。不同类型的变量占据的内存单元大小不同。,编译程序在编译时要根据变量类型进行语法检查。例,整型变量a、b可以进行“求余”运算a%b若把a、b定义为实型变量,则上述运算非法。,常量类型与变量类型比较,常量:整型、实型、字符型、字符串型变量:整型、实型、字符型没有字符串型变量,字符串由字符型数组来存放!,整型数据,整型常量:10进制数8进制数(以0开头、0-7)16进制数(以0 x开头、0-f),能够进行各类

5、数据的转换(含2进制),数制转换,2进制到10进制,20+24+26+27+29+212+214=1+16+64+128+512+4096+16384=21201,10进制转换为2进制,(20484096),0,0,0,0,1,1,1,0,1,0,1,1,0,0,0,1,2进制转换为8进制,6,2,7,3,5,1,0153726,2进制转换为16进制,6,D,7,D,0 xD7D6,8进制转换为2进制,0153726,16进制转换为2进制,0 xD7D6,8进制转换为10进制,0123,3*80+2*81+1*82=3*1+2*8+1*64=83,10进制转换为8进制,(64512),1,2,

6、3,0123,10进制转换成8进制也可以先转换成2进制,再转换成8进制10进制与16进制的转换与8进制类似16进制与8进制之间的转换略,整型变量分类,有符号,无符号,(有符号)基本整型 int,(有符号)短整型 short,(有符号)长整型 long,无符号基本整型 unsigned int,无符号长整型 unsigned long,无符号短整型 unsigned short,整型变量,整型变量在内存的存储形式,整型变量在内存中是以二进制数形式存在的不同类型的整型变量分别占据2或4个字节。数制以补码形式表示(正数负数都是),正数补码就是其本身负数补码:绝对值二进制按位求反加1得到第一位为符号位

7、(有符号时)0表示正数、1表示负数,int a=9;,+1,int a=-9;内存中如何存储?,整型变量分类及参数,基本整型能表示的范围?,unsigned int a;a能表示多少的范围?2字节16位二进制数最大1111111111111111最小00000000000000000到65535(216-1),基本整型能表示的范围?,int a;a能表示多少的范围?最高位表示符号最大011111111111111132767(215-1)最小1000000000000000?,int a;a的值是多少?,-1,按位求反,6,添负号,-6,求负数补码负数绝对值(添负号)按位求反+1,负数补码转换

8、成十进制(上面的逆过程)?,int a;a的值是多少?,-1,按位求反,32768,添负号,-32768,基本整型能表示的范围?,int a;a能表示多少的范围?最高位表示符号最大011111111111111132767(215-1)最小1000000000000000?,-32768,整型变量的定义,int a,b;unsigned short c,d;long e,f;unsigned g;要在函数的开头部分定义(声明)变量。,整型常量的类型,1、整型常量的值在-32768+32767范围内,编译器认为是int类型。2、整型常量的值超过上述范围,而在-214748648+21474864

9、7范围内,编译器认为是long类型。,3、在整型常量的值后面家字母L(l),则告诉编译器,把该整数常量作为long类型处理。例:123L、0L常量没有unsigned类型。,实型数据,实型常量实数(real)又称为浮点数(float),表达方式:小数表示:0.123、.123、123.0、123.、0.0(必须有小数点)指数表示:123e3 或 123E3、123E-2,实型数据内存存储方式,实型变量类型及参数,实型变量的定义,float x,y;/*指定x、y为单精度实型变量*/double z;/*指定z为双精度实型变量*/,实型常量不分float型和double型。一个实型常量可以赋给一

10、个float型或double型变量。根据变量的类型截取实型常量中相应的有效位数字。,float a;double b;a=12345.6789;b=12345.6789;单精度a只能接收7位双精度b能接收9位,作业:P653.3(计算各种数制,除二进制外不算补码)3.4(除了char型),字符型数据,字符常量:单引号括起来的一个字符如:a、x、D、?、$。注意:a和A是不同的字符常量。(区分大小写),如何表示字符,开头的字符序列称为转义序列使其后字符变为另外的意义,转义字符,n t b r,换行 横向跳格 退格 回车,如何表示&,有没有另外一种方法实现?,输出是什么样的?,例:main()pr

11、intf(abctderftgn);,制表区1,制表区2,f,g,字符变量,字符变量用来存放字符常量定义形式及赋值:char c1,c2;c1=d;c2=a;字符常量用单引号括起来,字符数据在内存中的存储形式及其使用方法,一个字符变量在内存中占一个字节将一个字符常量放到一个字符变量中是把该字符的ASCII码放到存储单元中例,a的ASCII码为97,字符以ASCII码存储,其存储方式与整数类似。C语言允许字符和整数之间进行运算。字符型变量和整型变量某些情况可互用P374 附录I(常用字符与ACSII代码表),输出如何?,main()char a,b;a=A;b=65;printf(a:%c%dn

12、,a,a);printf(b:%c%dn,b,b);,EXP0302.C,a:A 65b:A 65,输出如何?,main()int a,b;a=A;b=65;printf(a:%c%dn,a,a);printf(b:%c%dn,b,b);,EXP0303.C,a:A 65b:A 65,输出如何?,main()int a;char b;a=A+15;b=D+32;printf(a:%c%dn,a,a);printf(b:%c%dn,b,b);,EXP0304.C,a:P 80b:d 100,如何输出&,main()char a,b,c;a=39;b=;c=92;printf(a:%c%dn,a,

13、a);printf(b:%c%dn,b,b);printf(c:%c%dn,c,c);,EXP0305.C,a:39b:34b:92,输出如何?,main()char c1,c2,c3,c4,c5,c6;c1=65;c2=32;c3=97;c4=10;c5=48;c6=1;printf(%c%c%c%c%c%c,c1,c2,c3,c4,c5,c6);,EXP0306.C,Aa0,输出如何?,main()printf(101x20141x0a060 x01);printf(nn);,EXP0307.C,Aa0,字符串常量,字符常量:单引号括起来的一个字符。字符串常量:双引号括起来的字符序列How

14、 do you do.CHINA$123.45 a(a?),字符串常量在内存中的存放,字符串常量在内存中的存放:每一个字符均以其ASCII码存放最后添加一个空字符 即0字符串常量CHINA存放在内存中的情况是:,C,H,I,N,A,0,注意:字符变量中只能存放一个字符,不能存放字符串!char c;c=a;/*字符a*/c=a;/*字符串a*/,变量赋初值,在定义变量的同时指定其初值例:int a=3;float f=3.56;char c=a;int a,b,c=5;,注意:多个变量指定相同的初值时定义a,b,c三个整型变量均赋初值为3:int a=3,b=3,c=3;int a=b=c=3

15、;,可是在付值时允许:int a,b,c;a=b=c=3;,各类数值型数据间的混合运算,整型、实型(包括单、双精度)、字符型数据可以混合运算。例:10+a+1.5-8765.1234*b混合运算时,先转换成同一种类型,然后进行运算。,转换规则,例:10+a+i*f-d/e(int i;float f;double d;long e;),C运算符简介,1算术运算符(+-*/等)2关系运算符(=&|)5赋值运算符(=等)6条件运算符(?:)7逗号运算符(,),8 指针运算符(*、&)9 求字节数运算符(sizeof)10强制类型转换运算符(类型)11分量运算符()12下标运算符()13其它(函数调

16、用运算符(),算术运算符、算术表达式,基本运算符:+-*/%运算方法与数学运算基本一致*/%运算优先级一样,从左向有右计算。,3*5153/50两个整型变量,运算后结果为整型变量,17/10/3017%10%31,17/10%3117%10/32,强制类型转换运算符,运算符两侧的数据类型不同时,先自动进行类型转换,再运算。但是程序员可以强制进行某种转换。强制类型转换的一般形式是:(类型名)(表达式),(double)a;/*将a的值转换为double类型*/(int)(x+y);/*将x+y的值转换为int类型*/(float)(5%3);/*将5%3的值转换为float类型*/,(int)(

17、x+y);(int)x+y;(int)(x);(int)x;int(x);说明:强制类型转换时,得到一个所需类型的中间变量,原来变量的类型不发生变化。,17/10/3(float)17/10/3(float)(17/10)/300.5670.333,自增、自减运算符,自增:使变量的值加1 自减:使变量的值减1+i;/*在使用i之前使i加1*/-i;/*在使用i之前使i减1*/i+;/*在使用i之后使i加1*/i-;/*在使用i之后使i减1*/,i=3;j=+i;/*先使i加1,再赋给j,执行后j=4,i=4*/i=3;j=i+;/*先把i赋给j,再使i加1,执行后j=3,i=4*/i=3;pr

18、intf(“%d”,+i);printf(“%d”,i+);,注意:+和-只能用于变量,不能用于常量和表达式。5+;(a+b)+;#define ONE 1;ONE+;,+和-的结合方向为“右结合”。i=3;printf(“%d”,-i+);-i+(负值运算符-和自增运算符优先级相同)-(i+)(-i)+输出是 3 输出后i值为4,有关表达式使用中的问题,表达式中使用+或-易错i=3;k=(i+)+(i+)+(i+)i+先使用i,再加1执行后:k=3+3+3=9、i=6k=(+i)+(+i)+(+i)+i先加1,并且执行了3次,再使用i,执行后:k=6+6+6=18、i=6,出现多个运算符时,

19、编译器在处理时尽可能多的(从左到右)将若干个字符组合成一个运算符i+j;(i+)+j i+(+j),i=3;printf(%d,%d,i,i+);Turbo C中,调用函数时,实际参数的处理顺序是从右到左。先右:i+,先使用i(3),再使i加1。后左:i(现在值为4)因此,输出结果:4,3,对于初学者来说,要尽可能的使用意义明确(虽然书写要麻烦一些)的语句,尽量不要将-or+与其他运算符一起使用:例:j=i+;可以等效为:j=i;i=i+1;,赋值运算符和赋值表达式,赋值运算符:=作用:将一个表达式的值赋给变量例:a=3/*常数3赋给变量a,常数是特殊的表达式*/a=b+c+1;,复合的赋值运

20、算符,a=3;a+=3-2;a*=2;a/=3;,赋值表达式,表达式:a=5语句:a=5;a=(b=5);/*b的值等于5,表达式b=5的值等于5,因此a的值等于5*/a=b=5;/*与上述表达式的意义相同*/,a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)a+=a-=a*a,逗号运算符和逗号表达式,逗号运算符:,逗号表达式:用逗号运算符把两个表达式连接起来的表达式其一般形式为:表达式1,表达式23+5,6+8/*是一个逗号表达式*/逗号表达式的值等于“表达式2”的值,b=(a=3*5,a*4);逗号运算符在所有运算符中优先级最低先计算a=3*5,则a=15,在计算a*4,即60,则b=60 x=(a=3,6*3)/*赋值表达式*/x=a=3,6*a/*逗号表达式*/,逗号可以作运算符,也可以作分隔符printf(%d,%d,%d,a,b,c);/*逗号做分隔符*/printf(%d,%d,%d,(a,b,c),b,c);/*(a,b,c)中的逗号是运算符 其余逗号是分隔符*/,预习试验(上机指导)P245 试验2 试验报告(严格要求&作业)作业 P66 3.93.12,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号