资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,/49,数据类型、运算符,与表达式,教学要点,一、,C,数据类型,二、,数据的定义,1,常量与符号常量,(常量的含义、类型、定义方法),2,变 量,(变量的含义、类型、命名、定义与使用),三、,数据类型的相互转换,四、,运算符与表达式,C,语言,提供如下数据类型:,数据类型,构造类型,指针类型,空类型(,无值类型),void,枚举类型,enum,数组类型,结构类型,struct,联合类型,union,基本类型,整型,int,字符型,char,实型(浮点型),单精度实型,float,双精度实型,double,C,数据类型,常量与符号常量,1,、常量:,在程序运行过程中,其值保持不变的量。,2,、符号常量,1,)含义:用一个标识符表示的常量。,2,)定义:,#define,标识符,数值,例,3,1,:,#define PRICE 30,其作用是定义符号常量,PRICE,的值为,30,,在程序中任何用到,PRICE,符号常量的地方,系统将自动用常量,30,代替。,3,)说明:,为区分符号常量与变量的不同,通常符号常量用大写字母表示(但不是必须)。,常量与符号常量,例,3_1,:,3,、,常量的类型:,根据字面形式可将常量区分为不同的类型。,常量的类型,1,),整型常量:,C,语言表示,整型常量的方法有以下三种:,十进制整数:用不带任何修饰的整数表示。如123、-456、0等;,八进制整数:以数字0开头的整数。如0123、-011等;,十六进制整数:以数字0,x,开头的整数。如,0 x123,、,0 x2ef,;,2,)实型常量(浮点数),十进制数形式的浮点数:由数字和小数点组成。,如:,123.456,、,0.123,、,123.0,、,0.0,、,123.,等。,指数形式的浮点数:用字母,e,表示十进制指数中的,10,。,如:,123e3,(,表示,123*10,3,),注意:,e,字母前必须有数字,且,e,后的指数必须为整型。,如:,e3,、,2.1e3.5,、,.e3,为不合法。,C,编译系统将浮点型常量作为双精度来处理。,常量的类型,常量的类型,3,)字符常量:,C,语言规定以单引号,包围的,单个字符,为字符常量。,如:,A,、,a,、,2,、,!,等。,注意:,请区别,A,和,a,的不同;,中的字符引用的是该字符的,ASCII,码值。,字符常量的存放形式与整数的存放形式相类似,故,C,中的字符数据与整型数据之间具有相通性。,4,),转义字符常量,(也称控制字符常量),用,开头的特殊字符,用以产生一个动作。如:,n,、,r,、,t,、,v,、,等。,请同学们理解并记忆常用的转义字符,(P48),,学会其使用方法。,(,课本例,3.5),常量的类型,转义字符常量,转义字符 功能,n,换行,t,横向跳格,v,竖向跳格,b,退格,r,回车,f,走纸换页,“,”,字符,“,”,字符,0 ASCII,码字符,ddd,1,至,3,位八进制数所代表的字符,xhh,1,至,2,位八进制数所代表的字符,f?gde,h?j?k,例,3_2,:,/,?代表空格,5,)字符串常量,用双引号将一串字符括起来称为字符串常量。如“,asee,”,、“,011”,、“,We are studying C”,等。规定:在每一个字符串常量的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。,要点:请区别,”,A,”,与,A,的不同,(,长度不同,),。,”,A,”,A,A,常量的类型,A 0,ASCII,码为0的字符,变 量,1,、变量的含义:,在程序执行过程中,其值可以被改变的量。,变量的构成:,变量名、变量值,。,(注意区分变量名和变量值,:,存储单元地址与存储单元内容),2,、,标识符与变量的命名,3,、,变量的定义,4,、,不同类型变量的定义与使用,5,、变量赋初值,12,a,标识符与变量的命名,1,、标识符:用于标识变量名、符号常量名、数组名、函数名、类型名、文件名的有效字符序列。,2,、标识符的组成:,由字母、数字和下划线组成,且第一个字符必须为字母或下划线。,注意:,C,中区分大小写,3,、变量的命名,每个变量具有一个名称,以区分不同的变量。,建议变量名的长度最好不要超过,8,个字符。,变量的命名原则:按,“,见名知意,”,的原则。,变量的定义,变量的定义:,变量类型 变量名,=,变量值,说明:,变量必须先定义、后使用。,应保证变量名使用正确(严格区分大小写),定义后的变量,在编译时为其分配相应大小的存储单元。,可在编译时依变量类型的定义检查该变量所进行的运算是否合法。,整型变量,1,、含义:,用于存放整型数据的变量,数据在内存中以二进制形式存放其,补 码,。,2,、分类:,int,、,short,int,、,long,int,、,unsigned,int,、,unsigned short,、,unsigned long,。,3,、,整型变量可表示的数据范围,4,、整型变量的定义:,数据类型 变量名,变量值,例,3-3,:,5,、数据溢出:,6,、,整型常量的类型匹配,例,3_3:,输出信息:,sum is 579,整型常量的类型匹配,若值在,-32768,至,32767,之间,为,int,型。可赋值给,int,long,型变量。,若超出上述范围,且在,-2147483648,至,2147483647,内,为,long,型。可赋值给,long,型变量。,若数值后面加上,“,l,”,或,“,L,”,,则为,long,型。如,123L,。,数值后加上,“,u,”,或,“,U,”,,为,unsigned,型。,无符号型变量只能存放不带符号的整数,而不能存放负数。,整型变量可表示的数据范围,实型变量,1,、含义:用于存放实型(浮点型)数据的变量,按指数形式存储。,2,、分类:,单精度:,float,实型变量名;,双精度:,double,实型变量名;,长双精度:,long double,实型变量名;,如:,float x,y;,double z;,实型变量,3,、,存储特点:,说 明,:一个实型常量可以赋值给一个,float,型变量或,double,型变量。,4,、舍入误差:,类型 位数,数的范围 有效数字,float,32,10,-37,10,38,6,7,位,d,ouble,64,10,-307,10,308,15,16,位,long double 128 10,-4931,10,4932,18,19,位,字符变量,1、含义:用于存放字符常量,,占用,1,个字节,(存储,ASCII,码,值,),2、定义:,char,字符变量名,如:1),char c1,c2;,c1=,d,;,c2=,s,;,2,),unsigned char sum;,说 明,:,1,)字符数据可以以字符格式输出,也可以整型输出。,2,)字符数据与整型数据通用,3,)字符数据与整型数据可直接进行算术运算,3,、,例,3,4,、例,3,5,:,输出:,c1=a,c2=A,说明:,字符数据与整型数据之间可以相互赋值。,c1=97,c2=65,字符数据可以以字符或整型数据两种方式输出。,例,3_4:,程序输出为:,c1=A,c2=B,例,3_5:,将两个小写字母转换成大写字母。,数据类型的相互转换,一、自动转换的原理,1,、,基本原则,2,、要点:以数据类型所占内存存储空间的长度最大者为准。,如:,int,+char+float double,2B 1B 4B 8B,3,、,例:,设一表达式中含有,int,long,unsigned,char,类型的常数和变量,则表达式的最后结果是,。,(,A)int,(B)char (C)unsigned (,D)long,各类型数据的混合运算:,高,低,double,float,long,unsigned,int,char,short,二、强制类型转换,1,、功能:由用户根据自己的要求来决定数据类型的转换结果。,2,、格式:(类型名)(表达式)注意()不可缺少。,3,、应用:,(,1,)为满足运算的要求:,如:,int,i=3;,float x=13.6;,(,int)x%i,;(13%4=1),(,2,),提高运算精度:,如:,int,=10;,float x;,x=i/3+25.5;(3+25.5=28.5),或,x=,(,float)i/3+25.5;(3.33+25.5=28.83),4,、,例,3,6,:,数据类型的相互转换,输出:,x=3.600000,i=3,例,3_6:,运算符与表达式,一运算符,1,、含义:,完成特定运算功能的符号。,2,、,运算的优先级与结合性,3,、,运算符的类型,:,C,语言的运算符范围很广,除了控制语句和输入输出以外的几乎所有的基本操作都包含在其中。,算术运算符,赋值运算符,逗号运算符,关系运算符,逻辑运算符,运算符与表达式,二、表达式,1,、含义:,由运算符和运算对象组成的字符序列。,2,、表达式的种类:,算术表达式:如,a+b+c,赋值表达式:,如,x=3.15,逗号表达式:如,a=3,a+15,关系表达式:,a10,逻辑表达式:,x1&x=,&=,=,|=,等。,使用复合赋值符的目的:简化程序;提高编译效率。,逗号运算符,1,、含义:,用于分隔各个表达式,最后一个表达式的值代表整个表达式的值,2,、形式:,简单形式:表达式,1,,表达式,2,如:,a=1,a+2,一般形式:表达式,1,,表达式,2,,表达式,3,,,,表达式,n,如:,a=3,a+3,a+10,a=a+20,a+1,逗号运算符,3,、求解过程:,从左至右依次计算各个表达式的的值,最后一个表达式的值为整个表达式的值。,例:,1,),a=3*5,a*4,结果为,60,2,),(a=3*5,a*4),a+5,结果为20,4,、使用要点,优先级在所有运算符中为最低。,如:,x=(a=3,6*a),结果为,x=18,x=a=3,6*a,结果为,18(x=3),并非任何地方出现的,“,,,”,都作为运算符使用。如:,printf(,“,%d,%d,%d,”,a,b,c,);,只作为分隔符。,“,顺序求值运算符,”,关系运算符,1,、含义:关系运算符用于判断各个运算对象之间的相互关系,2,、符号类型:,、,=,、,=,、,!=,3,、优先级:,、,=,的优先级相同,而,=,、,!=,优先级相同,且前者高于后者;,关系运算符的优先级低于算术运算符,高于赋值运算符。,4,、例:,ca+b,等价于,c(a+b),算术运算符 高,ab!=c,等价于,(ab)!=c,a=bc,等价于,a=(bc,等价于,a=(bc),赋值运算符 低,逻辑运算符,1,、含义:逻辑运算符用于完成逻辑(布尔)运算。,2,、符号类型:,&,(逻辑与)、,|,(逻辑或)、,!,(逻辑非),3,、,优先级,4,、使用要点,在,C,语言中,没有逻辑型的数据,以,“,1,”,代表,“,真,”,,以,“,0,”,代表,“,假,”,。,逻辑运算真值表(课本,P93,表,5.1,),逻辑运算规则:,&,参与运算的表达式同时为真,,则,&,运算的结果为真;,|,参与运算的表达式其中之一,为真,则,|,运算的结果为真;,!,为单目运算符,取运算对象的相反值。,各种运算符的优先级,!(逻辑非)高,算术运算符,关系,运算符,&,|,赋值运算符 低,赋值表达式,1,、含义:,由一个赋值运算符将一个变量和表达式连接起来的式子。,2,、一般形式:,变量,=,表达式,3,、求解过程:,赋值运算符按照,“,右结合,”,顺序运算,将,“,=,”,右边表达式的值赋值给左边的变量。,4,、使用举例:,a=b=c=3,表达式值为,3,,,a,b,c,值均为3,a=5+(c=2),表达式值为,7,,,a,值为,7,,,c,为,2,a=(b=4)+,(,c=6),表达式值为,10,,,a=10,b=4,c
展开阅读全文