【教学课件】第三章数据类型、运算符和表达式.ppt

上传人:小飞机 文档编号:5660848 上传时间:2023-08-07 格式:PPT 页数:48 大小:343.50KB
返回 下载 相关 举报
【教学课件】第三章数据类型、运算符和表达式.ppt_第1页
第1页 / 共48页
【教学课件】第三章数据类型、运算符和表达式.ppt_第2页
第2页 / 共48页
【教学课件】第三章数据类型、运算符和表达式.ppt_第3页
第3页 / 共48页
【教学课件】第三章数据类型、运算符和表达式.ppt_第4页
第4页 / 共48页
【教学课件】第三章数据类型、运算符和表达式.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

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

1、1,第三章 数据类型、运算符和表达式,2,3.1 C语言数据类型,3.1.1 C语言数据类型 整型 字符型 实型(浮点型)枚举类型 数组 结构体类型 共用体类型,单精度型双精度型,基本类型,构造类型,指针类型,空类型,数据类型,3,3.1 C的数据类型,4,3.2 常量与变量,常量1.定义:在程序执行期间,其值不可改变的量称为常量2.类型:数值常量 例如:10,3,2.68等符号常量 即用一个符号代表一个常量 例如:#define PI 3.1415926 main()float r,l,s;r=2;l=2*PI*r;s=PI*r*r;printf(“l=%d,s=%d”,l,s);,5,说明

2、:,符号常量必须先定义后才能用它表示一个数值。符号常量的值在其作用域内不能改变,也不能再被赋值。符号常量名习惯用大写字母表示。,6,变量,1.定义:程序执行期间值可以改变的量。2.命名规则:变量名由标识符表示,只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。例如:下列标识符中,不合法的变量名有:M.D.John,12%gf,1add,_ce36,age(每个变量分配 4个 字节),3,a,7,在C语言中,变量必须强制定义,其目的:1、凡未被事先定义的,不作为变量名。2、每一个变量被指定为一确定的类型,在编译时就能为 其分配相应的存储单元。3、指定每一个变量为一确定的类型,

3、在编译时据此检查 该变量所进行的运算是否合法。例如:如果变量 a,b 是整型类型,则可以进行求余运算:a%b 而两个实数类型的变量求余是不允许的。,8,*选变量名时,要做到“见名知意”例如:name st_age xm nl class sum*大小写字母是两个不同的字符,C变量名习惯 用小写字母表示。*建议变量名的长度不要超过8个字符。,请 注 意,9,3.3整型数据,整型常量的表示法十进制整数:由数字(0-9)和正负号表示 例如:123、-456、0 等八进制整数:以0开头数是八进制数 例如:0123 即(123)8=(83)10(123)8=182+2 81+3 80=(83)10十六进

4、制整数:以0 x或0X开头,例如:0 x123 即(123)16=(291)10-0 x12 即(-12)16=(-18)10,10,3.3.2 整型变量整型数据在内存中的存放形式(补码表示法:便于加减运算)int i;i=10;10=(1010)2,2,10,2,5,2,2,2,1,0,余数,0,1,0,1,首位,0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0,0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0,1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1,1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0,10的原码,取反,取反后再

5、加1,得-10的补码,10的表示法,正数的补码等于它的原码,-10,11,2整型变量的分类,基本型:以 int 表示 短整型:以 short int 或 short 表示 1.类型 长整型:以 long int 或 long 表示(123l、123L)无符号基本型(unsigned int)无符号型 无符号短整型(unsigned short)无符号长整型(unsigned long),(-3276832767),一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍。int a;/*变量a 的数值范围:-3276832768*/unsigned int b;/*变量b的数

6、值范围:065535*/,12,整型变量的字长short型字长16位(2个字节)。long 型字长32位(4个字节)。int 型随编译程序而定(可以是2个字节,也可以是4个字节)C要求 long型数据长度不短于int型,short型不长于int型。(short=int=long)long 型可以得到大范围的数据,但同时会降低运算速度,因此除非不得已,不要随便使用long型。,13,整型数据的溢出:main()int a,b;a=32767;b=a+1;printf(“”%d,%d”,a,b);运行结果:32767,-32767改进:将变量a和b改成long型,并按%ld 格式输出。,14,整型

7、数据的数据范围请看P43表。注意:1、在一个整数常量后面加一个字母l或L,则认为是long 型常量。2、在一个整数常量后面加一个字母u或U,则认为是unsigned int 型常量。,15,3.4实型数据,实型常量表示形式有如下两种:十进制数形式:由数字和小数点及正负号组成。(注意:必须有小数点)例如:23.678.678 23.指数形式:由数字、小数点、字母e或E及正负号组成。(注:e或E之前必须有数字,且后指数必须为整数)例如:3.5E-5 2e3 错误:E2 3.6e3.5.e6 e,16,3.4.2 实型变量实型变量可分为:单精度(float型)如:float x,y;双精度型(dou

8、ble型)如:double a,b,c;说明:1.float 型变量在内存中占4个字节;double 型变量在内存中占8个字节。2.单精度实数提供7位有效数字;双精度实数提供1516位有效数字。3.一个实型常量不分float 和 double 型,一个实型常量 可以赋给一个float 型或 double 型变量,并根据变量的类型截取实型常量中相应的有效位数字。例如:float a;double b;a=123456.789e5;b=123456.789;,17,main()float a,c;double b;c=a+20;printf(“a=%f,b=%f,c=%fn”,a,b,c);输出结

9、果:a=12345678848.000000,b=81000,(避免将一个很大的数与一个很小的数相加,以免出现舍入误差),18,3.5字符型数据,字符常量1.字符常量:用单引号括起来的一个字符。例如:a A$!注:a与A是 的字符常量,不同,2.转义字符:以一个开头的字符序列 例如:n 换行 t 横向跳格(水平制表)b 退格 v 竖向跳格(垂直制表)r 回车 f 走纸换页 a 报警 0 空字符,19,说明:,1、“ddd”与“xhh”分别表示用八进制数或十六进制数表示一个字符。例:101代表ASCII码(十进制)为65的字符A.系统中所有字符都有ASCII值(见374页)2、由于”在C语言中都

10、有了特殊的意义,故要想在字符串中使用它们,须在其前面再加上一个反斜线。例如:反斜线 单引号”双引号 3、除了前面介绍的特殊转义字符外,字母 代表字母本身。如c 代表字母 c。,20,判断下列字符串的长度:“054”“x56”cta”“ntbab”,21,22,字符变量,定义形式:char 标识符1,标识符2,标识符n 例如:char c1,c2,c3,ch;c1=a;c2=b;c3=c;ch=d;说明:1、字符变量在内存中占一个字节。2、在内存中,是把字符对应的ASCII码值放到存储单元中.3、字符型数据与整型数据之间可以通用.,。,6,6,23,main()char c1,c2;c1=97;

11、c2=98;printf(“%c%cn”,c1,c2);printf(“%d%dn”,c1,c2);输出结果:a b97 98,main()int i;char c;i=a;c=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);输出结果:a,97a,97,24,字符串常量,1.定义:括在一对双引号之内的字符序列或转义字符序列称为字符串常量。例如:“How are you!”“a”“*abcnt”2.存储:字符串中的字符依次存储在内存中一块连续的区域内,并且把空操作字符 0自动附加到字符串的尾部作为字符串的结束标志。故字符个数为n的字符串在内存中应占n+1

12、个字节。例:c=“china”,c h i n a 0,25,b 与B是否相同?b 与“b”是否相同?,b为98,B为66b是字符常量,“b是字符串常量,26,3.6变量赋初值,1.初始化:在定义变量的同时为变量赋初值2.形式:类型标识符 变量名=常量或常量表达式 例如:int x=10;char ch=a;变量赋初值允许使用符号常量例如:#define PI 3.1415926.float x=PI;.可对被定义的变量的一部分赋初值 例如:int a,b,c=1,d=2;float r=2,l,s;可对几个变量赋以同一个初值 例如:int a=6,b=6,c=6;或可写为:int a=b=c

13、=6;,27,3.7 各类数值型数据间的混合运算,一、运算过程:,先自动转换成同类数据,再进行运算。,二、转换规则:,低字长类型转换成高字长类型。,28,3.7各类数值型数据间的混合运算,形式:隐式转换(由系统自动进行)显式转换(强制类型转换)隐式转换的转换规则:int unsigned int long int unsigned long int double short,char float,(1)float 型数据一律转换成double 型数据。(2)char 和short int 型数据一律转换成 int 型数据 以上两条转换原则说明:即使两个操作数类型相同,但只要它们同属 char,

14、short int 或 float 类型,则转换一定发生。,29,例:若有:int i;float f;double d;long e;试判断表达式 3+b+i*f-d/e 的类型,int unsigned int long int unsigned long int doubleshort,char float,double型,30,C语言使用的基本表达式有:赋值表达式,如:a=3 算数表达式,如:3+4*2 关系表达式,如:32 逻辑表达式,如:35&a=b 条件表达式,如:ab?a:b 逗号表达式,如:a=3,b=4,c=5,31,3.8算术运算符和算术表达式,1、基本的算术运算符:+-

15、*/%说明:()上述运算符均为双目运算符(即有两个操作数)(2)在“”运算中,若操作数均为整数,则执行整除运算,舍去小数部分。例如:5/3=(3)“”要求两侧均为整数,“”运算不能用于float 和 double型数据例如:2,32,2、算术表达式和运算符的优先级与结合性,(1)算术表达式:用算术运算符和括号将操作数连接起来的,符合语法规则的式子。例如:a+b+a*b/c+2.8(2)优先级:高于(3)结合性:“自左至右的结合方向”例如:a-b+c3、强制类型转换形式:(类型名)(表达式)例如:(double)(a+b),33,说明:()表达式应用括号括起例如:(int)(x+y);若要得到x

16、/2的小数部分,应写为:(float)x/2 还是 float(x/2)()在强制类型转换时,得到一个所需类型的中间变量,原来变量类型未发生变化。例如:float x=8.6;int y;y=(int)x;,34,请看下面程序段:,main()float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);,输出结果:x=3.600000,i=3,注意:强制类型转换后并不改变原来变量的类型,35,4、自增、自减运算符(、),作用:使变量的值增或减,如:i,i(使用之前,先使i的值加(减)1)i,i(使用之后,使i的值加(减)1)+i 先执行i=i+1,

17、再使用i的值 i+先使用i的值,再执行i=i+1例如:int a=1,b;b=+a;b=a+;,举例:int j,i=3;j=+i;/*j的值为4,i为4*/j=i+;/*j的值为4,然后i的值变为5*/j=-i+;/*j的值-5,然后i的值变为6*/,36,说明:(1)为单目运算符(2)+、只能用于变量,而不能用于常量或表达式。例如:,(x+y)+,+a,b+中合法的为:(3)自增、自减运算符为右结合性(即自右至左)。例如:a+(a+),4、自增、自减运算符(、),错误的结合(-a)+,37,练习题,设a=2,则执行语句 k=+a+a+后的 k值为多少?(k=6,a=4)a=(i+)+(i+

18、)+(i+)?printf(“%d,%d”,i,i+)?,请避免这种写法,38,3.9 赋值运算符和赋值表达式,1、赋值运算符(=)形式:变量名=常量或表达式作用:将右边常量或表达式的值赋给左边的变量例如:b=c+d,要求:如果表达式类型与左边的变量的类型不 匹配,自动进行类型转换。,39,2、类型转换的原则,(1)将实型数据赋给整型变量时,舍弃实数的小数部分 如:若a为int型变量,执行a=3.56后,则a的值3,(2)将整型数据赋给实型数据时,数值不变,但以浮点 形式存储到变量中。如:若b为float型变量,执行b=35后,则b为35.00000,(3)整型数据赋给字符型变量时,只将低8位

19、原封不动地送到字符变量中(即截断)。,40,(4)字符型数据赋给整型变量时,将字符数据(8位)放到整型变量低8位中。高8位则需要依据“符号扩展”来决定。,41,(5)将带符号数据赋给长度相同的无符号型变量,原样照赋。(6)double 赋给 float 时,截取前面7位有效数字。,42,43,44,P66(3.11)写出下面赋值的结果。格中写了数值的是要将它赋给其它类型的变量,将所有空格添上赋值后的数值。,int 9 9 100 76 53 68 42-1,char c d L 5 D*X,unsigned int 99 100 76 53 68 42 65535,float 99.00000

20、0 100.000000 76.000000 53.65 68.000000 42.000000 65535.000000,long int 99 100 76 53 68 42 65535,45,3、复合赋值运算符复合赋值运算符:在赋值符“=”之前加上其它运算符共有10种复合赋值运算符+=,=,&,=,|=,46,例如:a+=3 a=a+3 x*=y+3 x=x*(y+3)4、赋值表达式定义:由赋值运算符将一个变量和一个表达式连接起来的式子。形式:变量=表达式说明:赋值表达式的值为被赋值的变量的值。例如:a=b=c=6 a=(b=4)+(c=6)a=(b=4)*(c=6),47,练习:写出顺

21、序执行下列表达式运算后的x值:1.x=a=b=10 2.x=25%(c=3),X=10,X=1,赋值表达式中可以包含复合赋值运算符 例如:若a=12,计算表达式a+=a=a*a运算后a的值 第一步:aa*a a=a-a*a=12-12*12=-132 第二步:a+=-132 a=a+(-132)=-264,48,3.10 逗号运算符和逗号表达式,1.逗号运算符:即“,”优先级:为所有运算符中级别最低的。2.逗号表达式 形式:表达式1,表达式2,表达式n 求解过程:顺次求解表达式1,表达式2 最后求解表达式n。逗号表达式的值为表达式n的值。例如:a=3*5,a*4 a=3*5,a*4,a+5 x=(a=4%3,a+1,a*10),60,20,10,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号