C程序设计-第二章

上传人:小*** 文档编号:243158301 上传时间:2024-09-17 格式:PPT 页数:40 大小:205KB
返回 下载 相关 举报
C程序设计-第二章_第1页
第1页 / 共40页
C程序设计-第二章_第2页
第2页 / 共40页
C程序设计-第二章_第3页
第3页 / 共40页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,C,程序设计,主讲:王广正,wgz80930,第二章 数据类型、运算符与表达式,C,语言的数据类型,常量与变量,变量赋初值,运算符和表达式,目的、要求:,掌握,C,的数据类型、运算符尤其是赋值运算符,;掌握标识符的命名规则。,3.1 C,语言的数据类型,C,数据类型,数组类型,结构体类型,共用体类型,枚举类型,整型,字符型,实型,(,浮点型,),单精度型,双精度型,基本类型,指针类型,构造类型,本章讨论,基本类型数据,3.2,常量与变量,常量:,其值不随程序的运行而改变的量,变量:,其值可随程序的运行而改变的量,3.2.1,常量,常量,字面常量(或直接常量):如,3,,,4,,,6.5,,,a,b,符号常量:以标识符代表常量的符号,一般用大写,#define PI 3.1415926,不管是字面常量还是符号常量,只要是常量,其值都不能被改变!,#define PI 3.14,main(),PI=3.15;,#define PI 3.1415926,main(),float r=3,s,v;,s=4*PI*r*r;,v=4/3*PI*r*r*r;,3.2.2,变量,main( ),int,a,b,; /*,定义变量,a,b,为整型*,/,a=123;b=456; /*,赋初值*,/,变量代表内存中的一个存储单元,用来存放数据。,a,b,123,456,注意,:,变量名,和,变量值,的区别,对应内存地址 内存地址中存放的内容,变量名又称为,标识符,只能由字母、数字和下划线,3,种字符组成,且第一个字符必须是字母或下划线,。,123, def, sum, _y,y&u,12.,以下正确的,C,语言标识符是,_,。,(2005-1),A) %x B),a+b,C) a123 D) test!,11._,是合法的用户自定义标识符。(,2005-12,),A) ah-,spks,B) double C) D) _,myapple,课堂练习,11.,以下合法的用户标识符是,_,。(,2006-1,),A) 1st B) break C) Two Words D) B757,(,1,),C,语言中,大、小写字母被认为是两个不同的字符,变量名一般用小写。,(,2,),C,语言中,标识符的长度无统一规定,随系统而不同。在写程序时尽量不要超过,8,个字符。,(,3,),标识符的选取,原则,:,“见名知意”,,这也是结构化程序的特征之一。,(,4,),C,语言中,变量必须,“,先定义后引用,”,,以便在编译时发现错误。,注意事项,3.3,整形数据,无符号整型:,unsigned,int,无符号短整型:,unsigned short,无符号长整型:,unsigned long,基本型:,int,表示,,-32768+32767,短整型:,short,int,或,short,表示,同,int,。,长整型:,long,int,或,long,表示,,-2147483648 +2147483647,无符号型,10,进制,8,进制:,0,开头的数字序列,16,进制:,0x,开头的数字序列,整型常量,整型变量,整型数据,整型变量的定义,变量的定义一般放在一个函数的开头部分。,例,3.2,:,整型变量的定义及,不同类型整型数据间的运算,main (),int,a,b,c,d,;,unsigned u;,a=12;b=-24;u=10;,c=,a+u;d,=,b+u,;,printf(a+u,=%,d,b+u,=%,dn,c,d,);,例,3.3,:,整型数据的溢出,整型数后加,l,或,L,表示长整型,其存储空间扩大为,4,个字节。整数后面加,u,,,按无符号数方式存储,如,-12345u,,,则先将其转换成补码,53191,,然后按无符号数存储。,main (),int,a,b,;,a=32767;,b=a+1;,printf(%d,%dn,a,b,);,3.4,浮点型(实型)数据,十进制形式:由数字和小数点组成,指数形式:,123e3,或,123E3,代表,123*10,3,E/e,前必须有数字,E/e,后必须为整数,单精度(,float,型):一般占,4,个字节,(32,位,), 67,位有效数字,双精度(,double,型):一般占,8,个字节,,15,或,16,位有效数字,实型常量,实型变量,实型数据,长双精度(,long double,型):一般占,16,个字节,,18,或,19,位有,效数字,计算时,,C,编译系统自动将实型常量按双精度处理,,然后根据变量类型截取相应的有效位数。这样可提高计算精度,但会降低运算速度。,若要按,float,型运算,在数字后加,f,或,F,即可,,如,1.65f,。,实型数据的舍入误差:,因有效数字位数有限而产生的。,例,3.4,:,实型数据的舍入误差,main( ),float,a,b,;,a=123456.789e5;b=a+20;,printf(“a,=%,fnb,=%,fn”,a,b,);,运行结果:,a=12345678848.000000,b=12345678848.000000,3.5,字符型数据,字符常量,单引号括起来的单个字符,如,a,x,等,转义字符,P48,页表,3-3,字符变量,(char),只能存放一个字符,在内存中占一个字节,字符在内存中以,ASCII,代码形式存放,字符变量和整型变量可以通用,3.5.4,字符串常量,用双引号括起的一个字符序列,例如:,ABC,、,123,、,a,、,nt ,“Good morning”,等,字符串常量的长度 :,所包含的字符个数,字符串常量的存储方式:,n,G,o,o,d,m,o,r,n,i,n,g,0,a,0,所占存储单元数:,串长度,1,例如:,字符串,结束标记,19.,设有说明语句:,char a=123,;则变量,a_,。,(2005-12),A),包含一个字符,B),包含两个字符,C),包含三个字符,D),说明不合法,13.,以下属于合法的长整型常量的是,_,。(,2006-1,),A) 5876 B) 0L C) 2E10 D) ”5876”,课堂练习,3.6,变量赋初值,main( ),int,a,b,; /*,定义变量,a,b,为整型*,/,a=123;b=456; /*,赋初值*,/,C,语言中,变量赋值由赋值运算符,=,来完成,方法为:,变量,=,表达式,赋值运算符的结合方向:,自右至左,a=b=c=5+3;,a+b,=5,3.6,变量赋初值(续),C,语言允许在定义变量的同时对变量初始化。如:,int,a=3;,int,a;,a=3;,等价,int,a,b,c,=3;,int,a,b,c,;,c=3;,等价,3.6,变量赋初值(续),注意,:对几个变量赋同一个初值的方法为:,int,a=b=c=5;,int,a=5,b=5,c=5;,main(),int,a=b=c=5;,printf(“a,=%,d,b,=%,d,c,=%,c”,a,b,c,);,main(),int,a,b,c,;,a=b=c=5;,printf(“a,=%,d,b,=%,d,c,=%,c”,a,b,c,);,3.7,各类数值型数据间的混合运算,整型、浮点型和字符型数据可以,混合运算,。,12+a+1.7*b,混合运算时需要进行,类型转换,,这些转换是由,系统自动进行,的。类型转换规则如下:,double,float,long,unsigned,int,Char,short,低,高,3.8.1 C,语言运算符,类型,种类,算术运算符,+ - * / %,赋值运算符,=,及其扩展赋值运算符,关系运算符, = | &,条件运算符,?:,逗号运算符,其他运算符,*、,&,sizeof,. - ,等,3.8,算术运算符和算术表达式,1.,基本的算术运算符:,加法运算符,或正值运算符,如,4+7,+1,减法运算符,或负值运算符,如,5-2,-4,*,乘法运算符,如,3*4,/,除法运算符,如,5/4,%,模运算符,或称求余运算符,,%,两侧均应为整型数据,如,7/4,说明,没有乘方运算符,,要计算,a,3,要写作,a*a*a,的连乘,或用标准库函数,pow(a, 3),“,/,”,的运算对象可为各种类型数据,但是当进行两个整型数据相除时,运算结果也是整型数据,“,%,”,要求运算对象必须是整型数据,功能是求两数相除的余数,余数的符号与被除数的符号相同。,9/4=2,9.0/4=2.25,9%4=1,-9%4=-1,2.,算术表达式和运算符的优先级与结合性,由,运算符,将运算对象连接成的式子,称为算术表达式。,运算符的优先级可以参考附录,C,。,优先级相同的运算符,符合“左结合性”。,a+b-c,a=123;,( ),+,- + -,* / %,+,-,同级 同级 同级,单目 双目,高,低,3.,强制类型转换运算符,一般形式:,(,类型名,)(,表达式,),或,(,类型名,),单个变量或常量,(,int)a,(int)2.3,(,float)(a+b,),(,float)a+b,说明:,在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。,main(),float x;,int,i;,i=(,int)x,;,Printf(“x,=%,f,i,=%,dn”,x,i,);,4.,自增、自减运算符,+ -,是单目运算符,有前缀和后缀两种形式,前缀形式,:,先自增,(,自减,),再引用;,后缀形式,:,先引用再自增,(,自减,),;,功能:,前缀形式,+,a,等价于,a = a + 1,-,a,等价于,a = a,1,后缀形式,a +,等价于,a = a + 1,a -,等价于,a = a 1,使变量的值增,1,或减,1,4.,自增、自减运算符(举例),当,a,5,时,+a,表达式的值为,6,,,且,a,6,a+,表达式的值为,5,,,且,a,6,b=+a,等价于,a=a+1,;,b=a,表达式的值为,6,,,且,a=6,b=6,b=a+,等价于,b=a; a=a+1,表达式的值为,5,,且,a=6,b=5,4.,自增、自减运算符(说明),+,和,-,的运算对象只能是变量(或运算结果是变量的表达式),不能是常量(或运算结果是数值的表达式)。,例如:,5+,、,(a+2)+,不合法。,具有右结合性,结合方向为从右到左。,例如:,a+,等价于,-(a+),如果有多个运算符连续出现时,,C,系统尽可能多的从左到右将字符组合成一个运算符,例如:,i + j,等价于,( i+)+j,-i+-j,等价于,-(i+)+(-j),3.9,赋值运算符和赋值表达式,“,=,”,为赋值运算符,如,a,3,;,赋值表达式的一般形式为:,将,表达式的值,存入,变量,对应的内存单元中,m=12,b=a-2,x=(x = 5),a,3,3.9,赋值运算符和赋值表达式(说明),赋值号左边必须是变量,右边可以是,C,语言任意合法的表达式,例如:,n= t +210,等价于:,a= (b=( (b*c)10) ),赋值号与数学中的等号含义不同,例如:数学中,a=b,等价于,b=a,C,语言中,a=b,不等价于,b=a,3.9,赋值运算符和赋值表达式(续),复合运算符:在赋值运算符前加上其它的运算符构成。,复合运算符的目的:简化程序和提高编译效率。,复合赋值运算符,(,右结合),+= -= *= /= %=,&= |= = = =,a+=3,a=a+3,等价,x%=y+3,x=x%(y+3),等价,3.10,逗号运算符和逗号表达式,逗号运算符:,逗号表达式:,用逗号运算符连接的表达式。,一般形式:,表达式,1,,表达式,2,,,,表达式,n,逗号表达式的值为表达式,n,的值。,逗号表达式的优先级是最低的。如:,int,a=3;,a=3*5,a*4,a=?,x=,(,a=3,6*a,) 赋值表达式,,x=18,x=a=3,,,6*a,逗号表达式,,?,并不是任何地方出现的逗号都是作为逗号运算符,,如:,printf(“%d,%d,%d”,a,b,c,);,“,a,b,c,”,为函数的,3,个参数,,逗号为参数间的分隔符,。,printf(“%d,%d,%d”,(,a,b,c,),b,c,);,“,(,a,b,c,),”,为逗号表达式,其值等于,c,的值。,课堂练习,13,.,设整型变量,a,的值为,2,,下列表达式值为,1,的是,_,。,(2004-1),A),a%3,B),a/3,C),-a,D),a+,14,.,设变量,a,、,b,、,c,已定义并赋值,则下列表达式中符合,C,语言语法规则的是,_,。,(2004-1),A),a=5+,B),a=b=c+,C),a=%2,D),b=a+1=2,16,.,下列式中,最终运算结果的数据类型不是单精度的表达式是,_,。,A),(int)(3+3.0),B),1e-3,C),(float)(3),D),(int)3.0+3.0,17,.,字符串,”,abx4134cd102y”,的长度是,_,。(,2004-1,),A),10,B),12,C),14,D),18,课堂练习,(,续,),18,.,设整型变量,x,y,z,均为,2,,表达式,(,x+)+(y+)+(z,+),的值是,_,。,(2004-1),A),6,B),7,C),8,D),9,1,.,设,int,a=3,b=5;float x=7.5,y=3.5;,则表达式,(float)a+b/2+(int)x%(int)y;,的值是,_,。,(2004-1),23,.,执行语句:,int,a; a=1+1.5;,后,正确的叙述是,_,。,(2005-12),A),a,的值是字符,3,B),a,的值是浮点型,C),不允许字符型和浮点型相加,D),a,的值是字符,1,的,ASCII,码值加上,1,课堂练习,(,续,),24,.,设,int,类型的数据长度为,2,个字节,则,unsigned,int,类型数据的取值范围是,_,。,(2005-12),A),均为,2,个字节,B),065535,C),-3276832767,D),-256,至,255,25,.,执行下列语句后,运行结果为,_,。,(2005-12),main(),int,i=3,j;,j=+,i+i,+;,printf(“%dn”,j,);,A),6,B),7,C),8,D),9,课堂练习,(,续,),26,.,若,a,为,int,类型,且其值为,5,,则执行表达式,a+=a-=a*a,后,,a,的值为,_,。,(2005-12),A),-5,B),-40,C),-15,D),不确定,3,.,如果,x,y,i,和,j,都是,int,型变量,则表达式,x=(i=1,j=6,y=8),的值为,_,。,(2006-1),作业,待定!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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