《【教学课件】第2章基本数据类型、运算符及表达式.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第2章基本数据类型、运算符及表达式.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2 2章章 基本数据类型、运算符及表达式基本数据类型、运算符及表达式2.1的基本数据类型的基本数据类型数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void数值类型数值类型字符类型字符类型char枚举类型枚举类型enum整整型型浮点型浮点型单精度型单精度型float双精度型双精度型double短整型短整型short长整型长整型long整型整型int数组类型数组类型结构体类型结构体类型struct共用体类型共用体类型union2.2常量与变量常量与变量常量常量程序运行的过程中,值不能被改变的量。程序运行的过程中,值不能被改变的量。含义:含义:分类:分类:字面常量
2、和符号常量。字面常量和符号常量。其中,字面常量又分为:其中,字面常量又分为:整型常量、实型常量、整型常量、实型常量、字符型常量(字符常量和字符串常量)字符型常量(字符常量和字符串常量)字面常量字面常量整型常量整型常量形式:形式:(1 1)十进制整型常量:)十进制整型常量:由由0 0至至9 9的数字组成,没有前缀,不能以的数字组成,没有前缀,不能以0 0起头。起头。(2 2)八进制整型常量:)八进制整型常量:以以0 0(数字(数字0 0)为前缀,其后由)为前缀,其后由0 0到到7 7的数字组成,的数字组成,没有小数部分。没有小数部分。(3 3)十六进制整型常量:)十六进制整型常量:以以0 0 x
3、 x或或0 0X X为前缀,其后由为前缀,其后由0 0到到9 9的数字和的数字和A A到到F F (大小写均可)字母组成,没有小数部分大小写均可)字母组成,没有小数部分整型常量中的长整型数据可用整型常量中的长整型数据可用L L(或小写字母或小写字母l l)作后缀表示。作后缀表示。十进制十进制、八进制八进制和和十六进制十六进制三种形式三种形式字面常量字面常量实型常量实型常量构成:构成:由整数部分和小数部分组成的,只有由整数部分和小数部分组成的,只有十进制十进制方式。方式。形式:形式:(1)定点数形式定点数形式:它由数字和小数点组成。整数和小数部分可以省它由数字和小数点组成。整数和小数部分可以省去
4、一个,但不可两者都省,而且小数点不能省。去一个,但不可两者都省,而且小数点不能省。如:如:1.234,.123,123.,0.0等。等。(2)指数形式指数形式(或称科学表示法或称科学表示法):它是用整数或定点数后加它是用整数或定点数后加e(或或E)和指数来表示和指数来表示;指数可正可负必须为整数指数可正可负必须为整数,字母字母e之前必须有数字。之前必须有数字。如如:1.234e3,12.34e2均合法表示均合法表示1.234*103;而而e3,1e2.3,.e3,e均不合法。均不合法。实型常量的后缀用实型常量的后缀用F/f表示表示单精度型单精度型。用。用L/l表示表示长双精度型长双精度型。例:
5、例:下列四个选项中,均是合法的实型常量的是下列四个选项中,均是合法的实型常量的是A、+2e-1-3e4.55e3B、-.91.2e-0-7.e8C、123e+14567+2e-1D、8e-4-5e+2-e3B字面常量字面常量字符型常量字符型常量分类分类:字符常量和字符串常量两类。字符常量和字符串常量两类。1.1.字符常量:字符常量:用一对用一对单引号单引号括起来的一个字符。括起来的一个字符。如:如:aa、AA、33、?等。等。特殊的特殊的转义字符常量转义字符常量:是将反斜扛是将反斜扛()后面的字符转换成另外的意思。后面的字符转换成另外的意思。转义字符及其含义转义字符及其含义转义字符转义字符含义
6、含义nnvvrraaddddddttbbff“xhhxhh转义字符转义字符含义含义换行换行垂直制表垂直制表回车回车响铃响铃单引号单引号3 3位位8 8进制数代表的字符进制数代表的字符水平制表水平制表退格退格换页换页反斜线反斜线双引号双引号2 2位位1616进制数代表的字符进制数代表的字符2.2.字符串常量:字符串常量:用一对用一对双引号双引号括起来的字符序列。括起来的字符序列。如如:The C Programming LanguageThe C Programming Language字符串中可以是任一字符,包括转义字符。字符串中可以是任一字符,包括转义字符。当字符串本身包括双引号时,必须用转
7、义字符当字符串本身包括双引号时,必须用转义字符“表示表示 ,从而防止二义性的解释。,从而防止二义性的解释。字面常量字面常量字符型常量字符型常量如如:UNIX SYSTEM UNIX SYSTEM 字符串常量用连续的存储单元存储,每个字符占一个字符串常量用连续的存储单元存储,每个字符占一个字节,字节,且在末尾自动加一个字符串结束符且在末尾自动加一个字符串结束符 0 0。注意:注意:a a 和和 aa的差别的差别 例:例:下列不合法的字符常量是下列不合法的字符常量是A、nB、abC、101D、0B符号常量符号常量用符号常量标识符来代表一个常量。用符号常量标识符来代表一个常量。如如:用用PI代表圆周
8、率代表圆周率,即即3.1415926。优点优点:含义清楚含义清楚,增加可读性。增加可读性。在需要改变一个常量是能做到在需要改变一个常量是能做到“一改全改一改全改”,增强了可维护性。增强了可维护性。用编译预处理命令中的用编译预处理命令中的宏定义宏定义来定义符号常量。来定义符号常量。宏定义格式宏定义格式:#define标识符标识符字符序列字符序列每行定义一个宏定义每行定义一个宏定义,句末无分号。句末无分号。符号常量定义格式符号常量定义格式:#define符号常量标识符符号常量标识符常量常量如如:#definePI3.1415926变量变量含义含义:程序运行过程中可以改变的量程序运行过程中可以改变的
9、量基本要素基本要素:变量名变量名、类型、值。、类型、值。变量名变量名:用标识符来表示用标识符来表示。变量的定义变量的定义格式格式:变量类型变量类型 变量名表列;变量名表列;变量类型变量类型:存储数据的类型存储数据的类型声明基本类型的关键字有:声明基本类型的关键字有:int int、floatfloat、charchar、doubledouble可进行修饰扩充的有:可进行修饰扩充的有:shortshort、longlong、unsignedunsigned定义类型有三个定义类型有三个含义含义:1 1、数学类型、数学类型2 2、存储空间、存储空间3 3、取值范围、取值范围类型类型位位范围范围cha
10、r8-128127(-2727-1)unsignedchar80255(028-1)shortint16-3276832767(-215215-1)unsignedshortint 160to65535(0216-1)int32-21474836482147483647(-215215-1)unsignedint3204294967295(0232-1)longint64(-263-1263-1)unsignedlongint64018446744073709551615(0264-1)float32-3.410383.41038(7位有效数字位有效数字)double64-1.7103081.
11、710308(15位有效数字位有效数字)例例:下面四个选项中下面四个选项中,不正确的变量说明是不正确的变量说明是_A.unsignedintui;B.shortintg;C.doubleintA;D.intp,j,k;C变量名表列:变量名表列:为同一类型变量名的列表,各变量名之间用逗号隔开。为同一类型变量名的列表,各变量名之间用逗号隔开。intm,M,n;/*/*定义定义m m,M M,n n为存放整型数据的整型变量为存放整型数据的整型变量*/*/floata,b,c;/*/*定义定义a a,b b,c c为存放单精度型数据的实型变量为存放单精度型数据的实型变量*/*/charc1,c2;/*
12、/*定义定义c1c1,c2c2为存放字符型数据的字符型变量为存放字符型数据的字符型变量*/*/注意:注意:1.1.变量必须是变量必须是先定义,后使用;先定义,后使用;2.2.定义变量的定义变量的声明语句声明语句必须必须放在放在本程序任何可执行本程序任何可执行3.3.语句之前或所在函数的语句之前或所在函数的可执行语句之前;可执行语句之前;3.3.在在同一函数同一函数内,内,不能不能定义定义同名同名变量,而在变量,而在不同函不同函4.4.数数中中可以可以定义定义同名同名变量,互不影响。变量,互不影响。4.4.变量除了具有数据类型外,还有存储类型,变量变量除了具有数据类型外,还有存储类型,变量5.5
13、.的作用域与生存期等。的作用域与生存期等。变量的值变量的值含义:含义:存储的数据值。存储的数据值。给变量赋值的给变量赋值的途径途径:1 1、用赋值运算符、用赋值运算符“”给变量赋初值给变量赋初值a、在定义变量的同时直接赋值;在定义变量的同时直接赋值;如:如:inta=3;floatf=3.56;b b、先定义变量,再赋值;先定义变量,再赋值;如:如:inta;floatf;a=3;f=3.45;c、可以给变量部分赋值可以给变量部分赋值如:如:inta,b,c=3;2 2、用、用scanf()scanf()从键盘读入数据;从键盘读入数据;如:如:inti;scanf(“%d”,&i);3、在程序
14、执行中,用赋值语句动态、在程序执行中,用赋值语句动态的改变变量的值。的改变变量的值。如:如:inti=9;intj;j=i-1;j=j+1;注意:注意:若对变量只定义而没有赋值,若对变量只定义而没有赋值,则该变量的值是随机的。则该变量的值是随机的。2.4运算符及表达式运算符及表达式1、按、按功能功能分为:分为:(1)(1)算术运算符算术运算符 +-*/%+-+-*/%+-(2)(2)关系运算符关系运算符 =!=(3)(3)逻辑运算符逻辑运算符 !&|!&|(4)(4)位运算符位运算符&(5)(5)赋值运算符赋值运算符 =复合赋值运算符复合赋值运算符 (6)(6)条件运算符条件运算符?:?:(7
15、)(7)逗号运算符逗号运算符 ,(8)(8)指针运算符指针运算符 *和和&(9)(9)求字节数运算符求字节数运算符 sizeofsizeof(10)(10)强制类型转换运算符强制类型转换运算符 (类型标识符)(类型标识符)(11)(11)分量运算符分量运算符 (12)(12)下标运算符下标运算符 (13)(13)其它其它 函数名函数名()()2.2.运算符按其连接运算对象的个数可分为:运算符按其连接运算对象的个数可分为:(1 1)单目运算符(仅对一个运算对象进行操作)单目运算符(仅对一个运算对象进行操作)!+-+-(取负号)(取负号)(类型标识符)(类型标识符)*&*&sizeofsizeof
16、(2 2)双目运算符(该运算符连接两个运算对象)双目运算符(该运算符连接两个运算对象)+-*/%=!=+-*/%=!=&|&|&|&|=复合赋值运算符复合赋值运算符(3)三目运算符(该运算符连接三个运算对象)三目运算符(该运算符连接三个运算对象)?:(4 4)其它)其它 ()()-3.3.按优先级及结合性按优先级及结合性优先级:优先级:标志运算符在表达式中的运算顺序。标志运算符在表达式中的运算顺序。结合性:结合性:优先级相同时,按优先级相同时,按从左到右从左到右或或从右到左从右到左的的结合顺序确定运算符的计算顺序。结合顺序确定运算符的计算顺序。分为二类:分为二类:(1 1)从右到左:从右到左:
17、单目、三目和赋值运算符单目、三目和赋值运算符(2 2)从左到右:从左到右:其它运算符其它运算符算术运算符与算术表达式算术运算符与算术表达式1.1.算术运算符算术运算符单目运算符:单目运算符:-(取负取负)、+(取正取正)双目算术运算符:双目算术运算符:+(加加)、-(减减)、*(乘乘)、/(除除)、%(余数余数)说明:说明:1、整数相除结果为整数,即只取商的整数部分;、整数相除结果为整数,即只取商的整数部分;2、%只适合整数运算只适合整数运算自增与自减运算符(自增与自减运算符(+与与-)说明:说明:单目运算符,操作对象只有一个且只能是单目运算符,操作对象只有一个且只能是单个变量单个变量。功能:
18、功能:(1 1)取由该运算符构成的表达式的值)取由该运算符构成的表达式的值(2 2)实现变量)实现变量(即运算对象即运算对象)自身的加自身的加1 1或减或减1 1运算。运算。方式:方式:前缀方式:前缀方式:运算符在变量的前面运算符在变量的前面,如如+a a或或-a a 先自增先自增/自减,再引用;自减,再引用;后缀方式:后缀方式:运算符在变量的后面运算符在变量的后面,如如a+a+或或a-a-先引用,再自增先引用,再自增/自减。自减。例:例:main()()inta=3;intb=+a,c;printf(”%d%dn”,a,b););c=a+;printf(”%d%dn”,a,c););结果:结
19、果:4454#includemain()charc1=A,c2,c3;inti=5,j,k;c2=c1+;c3=+c1;j=i-;k=-i;printf(c1=%c,c2=%c,c3=%cn,c1,c2,c3);printf(i=%d,j=%d,k=%dn,i,j,k);结果结果:c1=C,c2=A,c3=Ci=3,j=5,k=32 2、算术表达式、算术表达式用算术运算符将运算对象连接起来,符合用算术运算符将运算对象连接起来,符合语法规则,并能说明运算过程的式子。语法规则,并能说明运算过程的式子。赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符:赋值运算符:=一般形式:一般形式:变量变量
20、 =表达式表达式含义:含义:将赋值号将赋值号右边表达式右边表达式的值的值赋给赋给左边的变量左边的变量。如如:x=3;y=(x+2)*3;注意:注意:(1)(1)先计算赋值运算符右侧表达式先计算赋值运算符右侧表达式,再赋值。再赋值。(2)赋值运算符的左侧必须是一个变量。赋值运算符的左侧必须是一个变量。如:3=x;(x+y)=5;/*都错误*/复合赋值运算符复合赋值运算符一般形式:一般形式:变量变量 =变量变量 运算符运算符 表达式表达式;缩写式:缩写式:变量变量 运算符运算符 =表达式表达式;如如:x=x+y;x+=y;x=x*(y+z);x*=y+z;复合赋值运算符共有复合赋值运算符共有101
21、0种:种:+=(加赋值)(加赋值)-=(减赋值)(减赋值)*=(乘赋值)(乘赋值)/=(除赋值)(除赋值)%=(求余赋值)(求余赋值)&=(位与赋值)(位与赋值)|=(按位或赋值)(按位或赋值)=(按位异或赋值)(按位异或赋值)=(右移位赋值)(右移位赋值)例:例:#includemain()inta;floatb;a*=a/=(a=7)-(b=4.5);printf(a=%d,b=%fn,a,b);结果:结果:a=4,b=4.500000例例:intm=7,n=12;则能得到值为则能得到值为3的表达式是的表达式是_A.n%=(m%=5)B.n%=(m-m%5)C.n%=m-m%5D.(n%=
22、m)-(m%=5)D逗号运算符和逗号表达式逗号运算符和逗号表达式一般形式一般形式:表达式表达式1,表达式表达式2,表达式表达式n例例:z=(y=(x=4*5,x*5),x+25)结果结果:x=20,y=100,z=45综合例题综合例题:intk=7;floata=2.5,b=4.7;则表达式则表达式a+k%3*(int)(a+b)%2/4的值的值_A.2.5B.2.75C.3.5D.0.0A各类数值型数据间的混合运算与类型转换各类数值型数据间的混合运算与类型转换语言规定:语言规定:相同类型相同类型数据直接进行运算数据直接进行运算,运算结果是原数据类型运算结果是原数据类型;不同类型不同类型的数据
23、的数据先转换成同一类型先转换成同一类型,然后才可进行运算然后才可进行运算。两种转换形式:两种转换形式:(1)隐含转换隐含转换(隐式转换隐式转换);(2)强制转换强制转换(显式转换)显式转换)隐含转换隐含转换1、运算转换运算转换不同类型数据混合运算时不同类型数据混合运算时2、赋值转换赋值转换把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时3、输出转换输出转换输出时转换成指定的输出格式输出时转换成指定的输出格式4、函数调用转换函数调用转换实参与形参类型不一致时转换实参与形参类型不一致时转换由语言系统自动完成的由语言系统自动完成的doublefloatlongunsignedintc
24、har,short低低高高转换规则:转换规则:注意:注意:(1)(1)转换按箭头方向不是逐步进行转换按箭头方向不是逐步进行,而是一步到位。而是一步到位。(2)(2)类型转换只影响表达式结果类型转换只影响表达式结果,不改变原变量的类型。不改变原变量的类型。例例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intdoubledoubledoubledouble例例:以下表达式结果为整数的是以下表达式结果为整数的是_(设设inti;charc;floatf;)A.i+fB.i*cC.c+fD.i+c+fB强制转换强制转换通过强制类型转换运算符将表达式值转换为指定类
25、型。通过强制类型转换运算符将表达式值转换为指定类型。一般形式:一般形式:(类型标识符)表达式(类型标识符)表达式如:如:(int)(a+b*c-d/e)%f例:例:main()floatx1,x2;x1=5.1/1.7;x2=5.1/(int)1.7;printf(“x1=%f,x2=%f”,x1,x2);结果:结果:x1=3.000000,x2=5.100000注意注意:1、类型表示符两侧的括号不能省略;、类型表示符两侧的括号不能省略;2、转换时,得到的是一个所需类型的中间、转换时,得到的是一个所需类型的中间变量,原变量的类型未发生变化。变量,原变量的类型未发生变化。作作业业1、阅读程序,写出输出结果。、阅读程序,写出输出结果。main()()intx,y,z;x=y=2;z=3;y=x+1;printf(”%d,%dt”,x,y);y=+x1;printf(”%d,%dt”,x,y);y=z-+1;printf(”%d,%dt”,z,y);y=-z+1;printf(”%d,%dt”,z,y);2、计算下列表达式的值。、计算下列表达式的值。(1)52%10/2+4.0*(8/5)(2)20.0*(3/6*10.0)(3)(int)()(13.7+25.6)/4%4P25.2.2
限制150内