数据类型及其运算.ppt

上传人:za****8 文档编号:14121122 上传时间:2020-07-04 格式:PPT 页数:62 大小:885.51KB
返回 下载 相关 举报
数据类型及其运算.ppt_第1页
第1页 / 共62页
数据类型及其运算.ppt_第2页
第2页 / 共62页
数据类型及其运算.ppt_第3页
第3页 / 共62页
点击查看更多>>
资源描述
数据类型及其运算(1),第4章,2020/7/4,2,第4章数据描述与基本操作(1),4.1C语言数据类型简介4.2常量4.3变量4.4常用运算符和表达式,2020/7/4,3,字符集:编程可使用的字符,C语言程序的基本标识符,英文字母az,AZ;阿拉伯数字09;特殊符号(!%*:;?/以及空格、换行等),2020/7/4,4,例:判断下列标识符号合法性a,3s,x,BOOK_1,x3,-3x,s*T,sum5,_x7,bowy-1,M.D.John,#h3,char,,4.1C语言的基本词法标识符,定义:在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余的都由用户自己定义。,命名规则:标识符只能是字母(AZ,az)、或字母与数字(09)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。,3s,(3起不合法),-3x,(有-不合法),s*T,(有*不合法),bowy-1,(有-不合法),#h3,(有#不合法),char,(关键字(保留字)不合法),M.D.John,(有.不合法),2020/7/4,5,在使用标识符时还必须注意以下几点:,(1)TurboC规定标识符的长度为32。通常标识符长度不超过8个字符(2)标识符区别大小写。SUM和sum是两个不同的标识符。变量名应尽量使用小写字母。(3)标识符命名尽量有相应的意义。以便阅读理解、“顾名思义”。在C语言中,所有的变量都是先定义后应用,使用没有定义的变量名被认为是“非法”的。,2020/7/4,6,C语言的基本词法关键字,定义:关键字是由语言规定的具有特定意义的字符串,通常也称为保留字。用户定义的标识符不应该与关键字相同。分类:语言的关键字分为以下几类:P43(1)类型说明符用于定义、说明变量、函数或其它数据结构的类型。如int,double,float,long,short,auto,char等。,2020/7/4,7,C语言的基本词法关键字,(2)语句定义符用于表示一个语句的功能。如条件语句的语句定义符ifelse,循环语句的语句定义符do,while,for等。(3)预处理命令字用于表示一个预处理命令,使用时前面要加“”。如include,define,ifdef,endif等。关键字后必须有空格,圆括号,尖括号,双引号等分隔符,否则与其它字符一起组成新的标识符。,2020/7/4,8,4.1C语言数据类型简介,数据类型决定:1.数据占内存字节数2.数据取值范围4.其上可进行的操作,任何高级语言的程序设计都有共同的基本、派生类型。而随着计算机硬件性能指标的发展数据类型更多、取值更宽,例:inta10;chars390;等,例:int*p;char*p1;等,2020/7/4,9,4.2常量,常量是指在程序运行过程中其值不能被改变的量。常量的类型,可通过书写形式来判别。4.2.1数值常量4.2.2字符常量和字符串4.2.3标识符命名的常量4.2.4换码序列常量(转义字符),2020/7/4,10,4.2.1数值常量,1、整型常量(简称为整数)三种形式:十进制整型常量、八进制整型常量(以0开头的07数字串)、十六进制整型常量(以0X或0 x开头的09/af/AF字符串);整型常量在一般微型机中占用2个字节,它们的数值范围都是十进制的3276832767。C语言还提供一种长常量(在整型常量后面紧跟L或l)。它们的数值范围是十进制的21474836482147483647,在计算机中占用四个字节,如OL,038L,ox15L。2、实型常量(简称为浮点常量或实数)两种形式:十进制小数形式和指数形式(用E或e表示),例:1230,例:01230400,例:0X1E3-0 x1e,例:12L-9l,例:0.123124.,例:345e+2.5e-2,2020/7/4,11,实型常量(实数或浮点数)表示形式:十进制数形式:是由整数、小数点、小数三部分组成。其中数据部分或小数部分可以省略。数的正负用前面的“”(可以省略)号或“”号来区分。例如,(必须有小数点)如0.123,.123,124.0,0.0,124.指数形式:它是由尾数、小写字母e或大写字母E、指数三部分组成,字母e(或E)之前必须有数字即尾数且尾数部分可以是十进制整型常量或一般形式的实数,指数部分是十进制的短整型常量(可以带E负号)如12.3e3,123E-2,1.23e4,e-5,1.2E-4.5,e3规范化的指数形式:在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。例如:123.456可以表示为:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,其中的1.23456e3称为“规范化的指数形式”。,2020/7/4,12,4.2.2字符常量,1、字符常量字符常量是ASCII码字符集里的一个字符,包括字母(大、小写有区别)、数字和标点符号以及特殊字符等,均为半角字符。可以用作整数常量,可参与算术运算。2、字符常量表示形式:A、把单个字符用一对单引号括起来表示字符常量。如a,d,w,?等都是字符常量。abc、“a”(不合法)B、用该字符的ASCII码值表示字符常量。C、转义字符:反斜杠开头后跟规定的单个字符或数字,,例:a?,2020/7/4,13,例1:字符与整数的转化,#includestdio.hvoidmain()inti;charn;n=97;i=b;printf(n=%cn,n);printf(i=%dn,i);printf(i=%cn,i);,程序的输出为:n=ai=98i=b,2020/7/4,14,例2字符参与整数运算,#includestdio.hvoidmain()charn;n=a;n=n-65;printf(n=%dn,n);,程序的输出结果为:n=32,2020/7/4,15,例3字母的大小写转换,#includestdio.hvoidmain()charn,i;n=a;i=B;n=n-32;i=i+32;printf(n=%cn,n);printf(i=%cn,i);,程序的输出为n=Ai=b,2020/7/4,16,字符串,字符串用双引号括起来的零个或多个字符序列。例:“TurboC”,“China”。存储:编译时自动在字符串结尾加一个转义字符0作为字符串结束标志,即长度为n个字符的字符串占n+1个字节空间。但在输出时不输出。,例a“a”,a,a0,2020/7/4,17,4.2.4换码序列常量(转义字符常量),是特殊字符常量。以一个反斜杠”开头的字符序列,只代表某个特定的ASCII码字符。用单引号括起。例:单引号,反斜线,2020/7/4,18,转义符可以出现在字符串中,例如,“ABCD”,“101102x43x44”等都是字符串,分别表示“ABCD”、“ABCD”两个字符串。,一个字符串中所有的字符的个数称为该字符串的长度,其中每个转义字符只当做一个字符。例如,“ABC”的长度为5。,转义字符举例1,2020/7/4,19,转义字符举例2。#includestdio.hvoidmain()printf(abtcdbefgn);printf(tHello!);printf(101=%c,x61=%cn,101,x61);printf(101=%d,x61=%d,101,x61);printf(nhtrijkn);,abcefgHello!101=A,x61=a101=65,x61=97ijkh,t水平制表位在下一个8位ASCII码位输出:cd,b水平右退1位输出ef,e覆盖d,t,b,用单引号括起、以一个反斜杠”开头的字符序列,只代表某个特定的ASCII码字符。,输出一个单引号,2020/7/4,20,4.2.3标识符命名的常量(符号常量),一般用大写字母表示,而变量一般用小写字母表示。符号常量使用之前必须预先定义,其定义格式为#define标识符常量例:#definePI3.14159注:不是语句,后无;(结尾没有分号)优点:清晰易懂;易于修改。,2020/7/4,21,例4.1录入半径,求周长和面积。(标识符常量应用)#include#definePI3.1415926voidmain()floatradius,circum,area;scanf(%f,3circumferenceis18.849556areais28.274334,2020/7/4,22,4.3变量,变量:在程序执行过程中,其值可以改变的量。4.4.1变量说明和变量地址4.4.2变量的初始化4.4.3数据类型4.4.4存储类型和变量的作用域,2020/7/4,23,4.3变量,变量的三个要素:(1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。(2)存储单元。变量名对应着一段存储空间。(3)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。,2020/7/4,24,1、变量说明“先定义,后使用。”变量名:变量的名字,用标识符表示,不能与保留字(语句名、类型名)重名。变量说明:存储类型数据类型变量名;如:externinta;2、变量的地址:存储某变量的内存空间的首地址,用(指定变量、为无符号短整型)longe,f;(指定变量、为长整型),2020/7/4,27,实型变量,语言的实型变量,分为三种:,2020/7/4,28,不管是一般形式还是指数形式,它们的数值范围都是10381038有效数字7位。例如,1.23456789和1.234567是相同的,因为实型常量的有效数字是7位,所以1.23456789中的后两位是无效的。,浮点型数据在内存中的存放形式:一个浮点型数据一般在内存中占4个字节(32位)。与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。,2020/7/4,29,字符变量字符型变量用来存放字符常量,注意只能放一个字符。字符变量的定义形式如下:charc1,c2;在本函数中可以用下面语句对c1,c2赋值:c1a;c2b;一个字符变量在内存中占一个字节。,c=a;”a”;c”CHINA”;,结论:不能把一个字符串常量赋给一个字符变量。,2020/7/4,30,基本数据类型符及含义如下表所示:,2020/7/4,31,变量的初始化:在定义变量的同时给变量赋予初始值。变量赋初值的语句格式如下:存储类型符数据类型符变量名1初值1,变量名2初值2,;,4.7变量的初始化,2020/7/4,32,(1)语言允许在定义变量的同时使变量初始化。如:inta=3;/指定为整型变量,初值为floatf=3.56;/指定为浮点型变量,初值为.56charc=a;/指定为字符变量,初值为a,4.7变量的初始化,(2)可以使被定义的变量的一部分赋初值。如:inta,b,c=5;表示指定、为整型变量,但只对初始化,c的初值为(3)如果对几个变量赋以同一个初值,应写成:inta=3,b=3,c=3;表示、的初值都是。不能写成inta=b=c=3;(4)定义之后再给变量赋值:如:inta,b,c;charc1,c2;a=b=c=10;c1=c2=A;,注意:初始化不是在编译阶段完成的而是在程序运行时执行本函数时赋初值的,相当于有一个赋值语句。,2020/7/4,33,4.4.2变量的初始化,例4.4变量的初始化.voidmain()charc1=a,c2=b;charc3,c4;c3=c1-a+A;c4=c2-(a-A);printf(%c,%cn,c3,c4);printf(%c,%dn,c1,c1);,A,Ba,97,2020/7/4,34,4.7变量的内存单元分配,内存上部,编译程序根据变量数据类型说明在内存单元为其分配指定字节数,1字节,4字节,随机数,floatf;doubled;inta=10;charc=B;longb=-20;,随机数,4字节,8字节,内存下部,2020/7/4,35,C语言数据混合运算转换规则:不同类型数据运算时先自动转换成同一类型,再进行运算。什么情况下发生运算转换-不同类型数据混合运算时赋值转换-把一个值赋给与其类型不同的变量时输出转换-输出时转换成指定的输出格式函数调用转换-实参与形参类型不一致时转换转换方式:隐式转换和显示转换,4.8数据类型转换,2020/7/4,36,隐式转换,由低(字节长度短)向高(字节长度长)转换,2020/7/4,37,显式转换(强制转换)一般形式:(类型名)(表达式)例(int)(x+y)(double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变,例main()floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);结果:x=3.600000,i=3,精度损失问题,2020/7/4,38,4.9运算符和表达式(1),4.9.0运算符和表达式4.9.1算术运算符和表达式4.9.2赋值运算符和表达式,2020/7/4,39,4.9.0运算符和表达式(P51),1、C运算符算术运算符:+-*/%-(取负)+-关系运算符:=逻辑运算符:!没有乘方运算符aaa。除法不能写成mn,-4%-3=1,0,1.0,2020/7/4,45,例:基本算术运算符的使用,设变量定义如下:intn=10,m=3;floatf=5.0,g=10.0;doubled=5.0,e=10.0;,则n的结果是10nm,nm,n*m,n/m,m/n,n%m的结果13、7、30、3、0、1de,de,d*e,d/e的结果15.0,5.0,50.0,0.5nmf*g/d的运算顺序相当于(nm(f*g)/d),结果是3.0nm*f*d的运算顺序相当于(nm)*f)*d,结果是25.0,2020/7/4,46,2自增自减运算符,(1)自增自减运算符的运算对象、运算规则与结果、结合性,对象数,单目,名称,运算符,运算规则,运算对象,运算结果,结合性,增1(前缀),先加1后使用,增1(后缀),减1(前缀),减1(后缀),先使用后加1,先减1后使用,先使用后减1,整型、字符型、指针型变量或数组元素,同运算对象的类型,自右向左,2020/7/4,47,i+与+i的区别:是先执行后,再使用的值;是先使用的值后,再执行。例如:inti3;i的值先变成4,再赋给,j的值均为;先将i的值3赋给,的值为,然后变为,2020/7/4,48,(2)运算符的优先级:,增1减1运算符优先于双目基本算术运算符增1减1运算符和单目运算符、同级别,结合性是自右向左自增自减运算符,只能用于变量,而不能用于常量或表达式,如:5+,(a+b)+,若出现难以区分的若干个或组成运算符串时,C语言规定,自左向右取尽可能多的符号组成运算符。,ab应理解为(a)bab应理解为(a)b,错误,2020/7/4,49,例:增1减1运算符的使用,设变量定义如下:charc1b,c2B;(c1,c2可看成整型,其值分别为98,66),则:c1的值是99,运算后c1的值是cc1的值是98,运算后c1的值是ac1c2的值是164,运算后c1的值是c,c2的值是Bc1c2的值是32,运算后c1的值是a,c2的值是B,2020/7/4,50,关系运算符与关系表达式,关系运算符运算及优先次序,注:不是算术运算符和等。+-的优先级为4。C语言中的=称赋值运算符,不是等于(=)。优先级为14。,对象数,含义,运算符,运算规则,运算对象,结果(逻辑值),结合性,双目,小于,小于等于,大于,大于等于,等于,不等于,=,=,=,!=,满足为真不满足为假,整型、实型、字符型等,1(整数)0(整数),自左向右,优先级,6,7,例优先级示例ca+bab!=ca=bc,/c(a+b)/(ab)!=c/a=(bc),2020/7/4,51,4.1.2关系表达式,用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、字符表达式)连接起来的式子,称关系表达式。例如,下面都是合法的关系表达式:ab,abbc,(a=3)(b=5),ab,(ab)(bc)关系表达式的值是一个逻辑值:即“真”(1)或“假”(0)。,例inta=3,b=2,c=1,d,f;ab(ab)=cb+cbf=abc,/d=1,/表达式值1,/表达式值1,/表达式值0,/f=0,ab值为1,b+c=a,2020/7/4,52,4.2逻辑运算符和逻辑表达式,4.2.1逻辑运算符对两个关系式或逻辑值(C语言还可以是数值)进行运算,运算结果仍是逻辑值。运算符:!逻辑非b=5;!aa,算术运算符优先于关系运算符优先于双目逻辑运算符优先于赋值运算符赋值运算符的结合性是自右向左,2020/7/4,57,4.4.1赋值运算符、赋值表达式和赋值语句,赋值表达式中的“表达式”,又可以是一个赋值表达式。例如:a=(b=5),分析:括弧内的“b=5”是一个赋值表达式,它的值等于5。执行表达式“a=(b=5)”相当于执行“b=5”和“ab”两个赋值表达式。赋值运算符按照“自右而左”的结合顺序,因此,“(b5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等价。,2020/7/4,58,4.4.1赋值运算符、赋值表达式和赋值语句,请分析下面的赋值表达式(a=3*5)=4*3,分析:先执行括弧内的运算,将15赋给a,然后执行4*3的运算,得12,再把12赋给a。最后a的值为12,整个表达式的值为12。可以看到(a=3*5)出现在赋值运算符的左侧,因此赋值表达式(a=3*5)是左值,注意:在对赋值表达式(a=3*5)求解后,变量a得到值15执行(a=3*5)=4*3时,实际上是将4*3的积12赋给变量a,而不是赋给3*5。,不能写成:a=3*5=4*3,2020/7/4,59,4.4.1赋值运算符、赋值表达式和赋值语句,赋值表达式也可以包含复合的赋值运算符。如:a+=a-=a*a,分析:此赋值表达式的求解步骤如下先进行“*”的运算,它相当于*,a的值为144132。再进行“”的运算,相当于=a+(-132),a的值为132-132-264。,2020/7/4,60,赋值运算符的使用,设变量定义如下:charc1a,c2;intn165,n2,n3,n4,n5,n6;floatf13.0,f2;,则:c2n1运算后,c2的值是65,n1的值不变。n2!c1运算后,n2的值是0,c1的值不变。f2f10.001运算后,f2的值是3.001,f1的值不变。n3c1n1|c1!n1运算后,n3的值是1,c1和n1的值不变。注:运算顺序相当于n3(c1n1)|(c1!n1)n4n5n6(n1)运算后,n4,n5,n6的值均是64,n1的值是64。,注意:上述表达式的值就等于赋值表达式中的最左边的变量值。,2020/7/4,61,4.复合赋值运算符:+=-=*=/=%=例复合赋值运算符举例。#includevoidmain()inta=3,b=9,c=-7;a+=b;c+=b;b+=(a+c);printf(“a=%d,b=%d,c=%dn”,a,b,c);a+=b=c;printf(“a=%d,b=%d,c=%dn”,a,b,c);a=b=c;printf(a=%d,b=%d,c=%dna,b,c);,a=12,b=23,c=2a=14,b=2,c=2a=2,b=2,c=2a=4,b=1,c=2,a*=b;b/=c;c%=a;printf(a=%d,b=%d,c=%dna,b,c);,2020/7/4,62,小结,4.1C语言数据类型简介4.2常量4.3变量4.4常用运算符和表达式,常量4.2.1数值常量4.2.2字符常量和字符串4.2.3标识符命名的常量4.2.4换码序列常量(转义字符),变量4.4.1变量说明和变量地址4.4.2变量的初始化4.4.3数据类型4.4.4存储类型和变量的作用域,常用运算符和表达式(1)4.4.0运算符和表达式4.4.1赋值运算符和表达式4.4.2算术运算符和表达式,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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