《数据类型与表达式》PPT课件.ppt

上传人:za****8 文档编号:3170636 上传时间:2019-12-06 格式:PPT 页数:59 大小:397.01KB
返回 下载 相关 举报
《数据类型与表达式》PPT课件.ppt_第1页
第1页 / 共59页
《数据类型与表达式》PPT课件.ppt_第2页
第2页 / 共59页
《数据类型与表达式》PPT课件.ppt_第3页
第3页 / 共59页
点击查看更多>>
资源描述
第三章数据类型与表达式,3.1C的数据类型3.2常量与变量3.3整型数据3.4实型数据3.5字符型数据3.6变量赋初值3.7各类数值型数据间的混合运算,3.8算术运算符和算术表达式3.9赋值运算符和赋值表达式3.10逗号运算符和逗号表达式,3.1C的数据类型,数据结构:数据的组织形式。C的数据结构是以数据类型形式出现的。,C语言中的数据有常量与变量之分。它们分别属于以上这些类型。,3.2常量与变量,3.2.1常量和符号常量定义:常量:在程序运行过程中,其值不能被改变的量。分类:,例3.1符号常量的使用#definePRICE30main()intnum,total;num=10;total=num*PRICE;printf(“total=%d”,total);,注意:符号常量的值在作用域内不能改变;符号常量一经定义,不能再被赋值。如:PRICE=40;是错误的。符号常量的特点:习惯上,符号常量名用大写,变量名用小写含义清楚。在需要改变一个常量时做到“一改全改”。3.2.2变量定义:变量:其值可以改变的量,称为变量。一个变量应该有一,个名字(变量名),在内存中占据一定的存储单元。在该存储单元中存放变量的值。如图3.1所示。,标识符:定义:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列,称为标识符。简单说,标识符就是一个名字。规则:a.C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。例:合法的标识符和变量名:sum,average,_total,Class,Student_name,lotus_1不合法的标识符和变量名:M.D.John,¥123,#33,3D64,ab,b.区分大小写。一般变量名用小写字母表示。例:sum和SUM,class和Class是不同的变量名。c.建议标识符的长度不要超过8个字符。例:student_number和student_named.选择变量名和其它标识符时,应做到“见名知意”。例:name,day,total等。(即选有含义的英文单词或其缩写作标识符)。在C语言中,要求对所用到的变量作强制定义,即:“先定义,后使用”。,#definePRICE30main()intnum,total;num=10;total=num*PRICE;printf(“total=%d”,total);,#definea30main()intb,c;b=10;c=b*a;printf(“c=%d”,c);,3.3整型数据,3.3.1整型常量的表示方法整型常量就是整常数。表示方法:十进制整数。如:123,-456,0。八进制整数。以0开头的数是八进制数。如:0123表示八进制数123,-011表示八进制数-11。十六进制整数。以0 x开头的数是十六进制数。如0 x123,代表十六进制数的123。,3.3.2整型变量整型数据在内存中的存放形式数据在内存中是以二进制形式存放的,一个整型变量在内存中占2个字节。例:inti;i=10;,在微机中,凡是带符号的数一律用补码表示。正数补码与原码相同,即最高位为符号位,用“0”表示正,用“1”表示负,其余为数值位。例:求10的原码,负数负数的补码表示即为其绝对值的原码按位取反,然后在最低位加1所形成。例:求-10的补码。,整型变量的分类根据数值的范围划分基本整型,以int表示。短整型,以shortint表示,或以short表示。长整型,以longint表示,或以long表示。,有符号类型(signed):存储单元中最高位代表符号位(0为正,1为负),其余为数值位。无符号类型(unsigned):存储单元中全部二进位用来作为数值位。无符号变量只能存放不带符号的数,如:123,4567,而不能存放负数,如:-45,-78。归纳,可以用以下6种整型变量。有符号基本整型signedint无符号基本整型unsignedint有符号短整型signedshortint无符号短整型unsignedshortint有符号长整型signedlongint无符号长整型unsignedlongint,整型变量的定义C规定,变量必须“先定义,后使用”,即强制类型定义。对变量的定义,一般是放在一个函数开头的声明部分。例:main()inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%dn”,c,d);,整型数据的溢出一个整型变量只能容纳-3276832767范围内的数,无法表示超过此范围的数。如果一个整型变量的值大于此范围,称之为溢出。例:main()inta,b;a=32767;b=a+1;printf(“a=%d,b=%d”,a,b);运行结果:a=32767,b=-32768,3.3.3整型常量的类型一个整数,其值在-32768+32767范围内,认为它是int型,可以赋值给int型和longint变量。一个整数,如果其值超过了上述范围,而在-2147483648+2147483647范围内,则认为它是长整型,可以将它赋值给一个longint型变量。,如果shortint与int型数据在内存中占据的长度相同,则一个int型的常量同时也是一个shortint型常量,可以赋值给int型或shortint型变量。一个整常量后面加一个字u,认为是unsigned型,如10u,在内存中按unsignedint规定的方式存放(即:存储单元中最高位不作为符号位,而用来存储数据)。如果写成-10u,则先将-10转换成其补码65526,然后按无符号数存储。在一个整常量后面加一个字母l或L,则认为是longint常量。例:123l,432L,0L等。,3.4实型数据,3.4.1实型常量的表示方法实数又称浮点数。它有两种表示形式:十进制小数形式。由小数点和数字组成。如:0.123,1.23,.123,123.等。指数形式。如:123103可表示为123e3或123E3注意:字母e(或E)之前必须有数字,且e(或E)后面的指数必须为整数。如:e3,2.1e3.5,.e3,e等都不是合法的指数形式。,一般指数形式例:123.456可表示为:123.456e0,12.3456e1,1.23456e2,0.l23456e3b.规范化的指数形式一个实数在用指数形式输出时,是按规范化的指数形式输出的,即:在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。例:123.456的规范化指数形式:1.23456e2,3.4.2实型变量实型数据在内存中的存放形式一个实型数据一般在内存中占4个字节(32位)。并按照指数形式存储。例:实数3.14159在内存中的存放形式,实型变量的分类分为三类:单精度(float)双精度(double)长双精度(longdouble)对每个实型变量都应在使用前加以定义例:floatx,y;doublez;longdoublet;,3.实型数据的舍入误差例1:main()floata,b;a=123456.789e5;b=a+20;printf(“b=%f”,b);运行结果:b=12345678848.000000理论值:b=a+20=12345678920,3.4.3实型常量的类型实型常量在运算时都是按照双精度数来进行。例:定义f为实型变量f=2.45678*4523.652.在一个数的后面加字母f或F,则编译系统就会按单精度来处理。例:定义f为实型变量f=2.45678f*4523.65f,3.一个实型常量可以赋给一个float型,double型,或longdouble型变量。根据变量的类型截取实型常量中相应的有效数字。例:floata;a=111111.111(7位有效)a=111111.1doubleb;b=111111.111(全有效)b=111111.111,3.5字符型数据,3.5.1字符型常量C的字符常量是用单引号括起来的一个字符。如:a、x、D、?、A等,其中A和a是不同的字符常量。转义字符以一个“”开头的字符序列,将反斜杠()后面的字符转换成另外的意义。(p48表3.3)如:101代表ASCII码为65的字符“A”。x41代表哪一个字符?,3.5.2字符变量字符型变量用来存放字符常量,一个字符变量只能放一个字符,即:一个字符变量在内存中只占一个字节。字符变量的定义形式:charc1,c2;c1=a;c2=b;3.5.3字符数据在内存中的存储形式及其使用方法,1.存储形式在内存中,字符数据以ASCII码存储。例:charc1,c2;c1=a;c2=b;ASCII码值:a:97,b:98,2.使用方法整型数据与字符型数据可以通用。一个字符型数据既可以字符形式输出,也可以整数形式输出。例:main()charc1,c2;c1=97;c2=98;printf(“%c,%cn”,c1,c2);printf(“%d,%dn”,c1,c2);运行结果:a,b97,98,可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算。例:大小写字母的转换main()charc1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c,%c”,c1,c2);运行结果:A,B,字符数据与整型数据可以互相赋值例:main()inti;charc;i=a;c=97;printf(“%d,%c”,i,c);运行结果:97,a,某些系统(如TurboC)将字符变量中的最高位作为符号位,即将字符处理成带符号的整数(signedchar)。其取值范围为:-128127,如果使用ASCII码为0127间的字符,用%d输出时,输出一个正整数;如果ASCII为128255,则得到一个负整数。例:main()charc=130;printf(“%d”,c);运行结果:-126,可以将字符变量定义为unsignedchar,此时取值范围是0255。3.5.4字符串常量1.定义:由一对双引号括起来的字符序列。例:“Howdoyoudo.”,“CHINA”,“a”2.不能将一个字符串赋给一个字符变量。例:charc;c=“CHINA”;/*错误*/3.a和“a”的区别?C规定:在每一个字符串的结尾加一个字符串结束标志“0”,系统据此判断字符串是否结束。,在内存中:a(1个字符)charc;c=a;/*正确*/,a,“a”(2个字符)charc;c=“a”;/*错误*/,“CHINA”(6个字符)printf(“CHINA”);,注意:在写字符串时不必加0,它是由系统自动加上的。,4.C中没有专门的字符串变量,如想存放一个字符串,必须使用字符数组,即:用一个字符型数组来存放一个字符串。,3.6变量赋初值,1.C允许在定义变量的同时使变量初始化。例:inta=3;floatf=3.56;charc=a;2.可以使被定义变量的一部分赋初值。例:inta,b,c=5;3.可以对几个变量赋予同一个初值。例:可以写成:inta=3,b=3,c=3;不能写成:inta=b=c=3;,3.7各类数值型数据间的混合运算,在进行运算时,整型、实型、字符型数据间可以混合运算,但是不同类型的数据要先转换成同一类型,然后才能进行运算。转换规则:,例:inti;floatf;doubled;longe;计算:10+a+i*f-d/e注意:上述的类型转换是由系统自动进行的,不需要人工转换。,3.8算术运算符和算术表达式,3.8.1C运算符简介C的运算符有以下几类:算术运算符(+*/%)关系运算符(=|inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);结果:x=3.600000,i=3,有两种类型转换:一种是系统自动进行的类型转换。如:3+6.5第二种是强制类型转换,当自动类型转换不能实现目的时,可用此类转换。如:floatx;则x%3不合法,必须:(int)x%34.自增运算符和自减运算符作用:自增运算符:使变量的值增1自减运算符:使变量的值减1,类别:+i,-i(在使用i之前,先使i的值加(减)1)i+,i-(在使用i之后,使i的值加(减)1)例1:main()inti=3;intj,k;j=+i;/*i=i+1;j=i;*/k=i+;/*k=i;i=i+1;*/printf(“j=%d,k=%d”,j,k);,注意:自增运算符(+)和自减运算符(-)只能用于变量,不能用于常量和表达式。例:i+,5+,(a+b)+和-的结合性是“自右至左”。例:-i+(其中负号运算符与+运算符的优先级相同)-(i+)5.有关表达式使用中的问题说明ANSIC没有具体规定表达式中的子表达式的求值顺序,允许各编译系统自己安排。例如:对表达式a=f1()+f2(),例:i=3(i+)+(i+)+(i+)=?几种结果:3+4+5=12i=63+3+3=9i=6为了避免在程序中出现这种歧义性,可改为:i=3;a=i+;/*a=i;i=i+1=3+1=4;*/b=i+;/*b=i;i=i+1=4+1=5;*/c=i+;/*c=i;i=i+1=5+1=6;*/d=a+b+c;结果为:d=a+b+c=3+4+5=12i=6,C编译系统尽可能多地(自左至右)将若干个字符组成一个运算符。如:i+j(i+)+j正确i+(+j)错误在调用函数时,实参数的求值顺序,C标准无统一规定。例如:i=3;printf(“%d,%d”,i,i+);结果:有的系统(从左至右求值):3,3有的系统(从右至左求值):4,3应改为:i=3;j=i+;printf(“%d,%d”,i,j);,3.9赋值运算符和赋值表达式,赋值运算符赋值符号“=”:就是赋值运算符。其作用是将一个常量或表达式的值赋给一个变量。例如:a=3;d=a;c=a+b;类型转换如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。(p59自学),3.复合的赋值运算符定义:在赋值运算符“=”之前加上其它运算符,可以构成复合运算符。C语言规定可以使用10种复合的赋值运算符。即:+=*=/=%=(b的初值为3)结果:3,3.10逗号运算符和逗号表达式,逗号运算符逗号运算符“,”:又称“顺序求值运算符”。2.逗号表达式用逗号运算符将两个表达式连接起来,称为逗号表达式。例如:3+5,6+83.一般形式表达式1,表达式24.求解过程先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。,如:3+5,6+8值为14a=3*5,a*4(赋值运算符的级别高于逗号运算符)结果?5.一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式。例如:(a=3*5,a*4),a+5的值是206.逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,表达式n整个表达式的值为表达式n的值。例如:4+5,6+7,8+9的值为17,7.逗号运算符的级别在所有运算符中是最低的。例如:x=(a=3,6*3)x=a=3,6*a8.在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值。如:for(i=1,j=1;i=10,j=10;i+,j+)9.并不是任何地方出现的逗号都是作为逗号运算符。例如:printf(“%d,%d,%d”,a,b,c);其中:a,b,c不是一个逗号表达式,a,b,c是printf函数的三个参数,逗号作为参数的分隔符。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!