C语言第三章数据类型、运算符与表达式C.ppt

上传人:tia****nde 文档编号:12805552 上传时间:2020-05-25 格式:PPT 页数:56 大小:665KB
返回 下载 相关 举报
C语言第三章数据类型、运算符与表达式C.ppt_第1页
第1页 / 共56页
C语言第三章数据类型、运算符与表达式C.ppt_第2页
第2页 / 共56页
C语言第三章数据类型、运算符与表达式C.ppt_第3页
第3页 / 共56页
点击查看更多>>
资源描述
第三章数据类型、运算符与表达式,2020年5月25日星期一,第三章数据类型、运算符和表达式,主要内容C语言的常量与变量C语言的基本数据类型各数据类型间的混合运算运算符和表达式,2020年5月25日星期一,C语言的数据类型,我们上节课讲到:著名的计算机科学家N.Wirth提出:程序=数据结构(描述数据)+算法(描述操作)一个良好的程序,应当综合考虑算法和数据结构算法处理的对象是数据,而数据是以某种特定的形式存在的数据结构是指数据的组织形式,2020年5月25日星期一,C语言的数据类型,C语言的数据结构是以数据类型形式出现的,2020年5月25日星期一,常量和变量,一、基本字符集字符,是组成语言的最基本元素,允许出现在C语言源程序的所有字符的集合,称为字符集。字母:az,AZ数字:09特殊字符:控制字符、分隔符、运算符,2020年5月25日星期一,常量和变量,二、关键字关键字,也叫做保留字,是指在C语言中具有特定的含义的字符,它们由系统定义,不能做为他用。,C语言中的一共有32个关键字:,2020年5月25日星期一,常量和变量,三、标识符用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。也就是说,标识符是一个名字C语言中的标识符只能由字母、数字和下划线组成而且第一个字符不能是数字不能将关键字作为标识符,2020年5月25日星期一,常量和变量,C语言中的标识符只能由字母、数字和下划线组成而且第一个字符不能是数字,问题:下面四个选项中,均是合法的标识符的选项是(A)a1b!12_e(B)minf121x(C)aintPI(D)x2m_nsummin,2020年5月25日星期一,常量和变量,标识符的注意事项C语言区分大小写,大小写不同的标识符是不同的例如:Student和student是两个不同的标识符标识符的长度有限制,要注意开发环境的限定TurboC允许的标识符的最大长度是32标识符的命名用有意义的单词组合如:Stu_Num表示学号,不要一味地用a,b,c等简单标识符名,2020年5月25日星期一,常量和变量,三、常量常量:在程序的运行过程中,其值不能被改变常量的分类:,0、-2、123,0.2、4.8、1.3e20,A、g、+、?,(用标识符表示的常量),/*Constantexample*/#definePRICE30main()intnum,total;num=10;total=num*PRICE;printf(total=%d,total)运行结果:total=300,2020年5月25日星期一,常量和变量,使用符号常量的优点:含义清晰(定义时要注意采用合适的常量名)一改全改,/*Constantexample*/#definePRICE30main()intnum,total;num=10;total=num*PRICE;printf(price=%d,total=%d,PRICE,total)运行结果:price=30,total=300,/*Constantexample*/#definePRICE25main()intnum,total;num=10;total=num*PRICE;printf(price=%d,total=%d,PRICE,total)运行结果:price=30,total=300,/*Constantexample*/#definePRICE25main()intnum,total;num=10;total=num*PRICE;printf(price=%d,total=%d,PRICE,total)运行结果:price=25,total=250,用指定的字符串PRICE来代替“25”,在预编译处理时会将程序中所有“PRICE”用“25”代替,替换时是做简单地置换,不作正确性检查,2020年5月25日星期一,常量和变量,使用符号常量的优点:含义清晰(定义时要注意采用合适的常量名)一改全改,/*Constantexample*/#definePRICE25main()intnum,total;num=10;total=num*PRICE;printf(“price=%d,total=%d”,PRICE,total);运行结果:price=25,total=250,宏定义(参见第十一章),常量名一般用大写字母,#define命令出现在函数外有效范围是从定义处到源文件结束,宏定义不是C语句,不需要分号,2020年5月25日星期一,常量和变量,使用符号常量的优点:含义清晰(定义时要注意采用合适的常量名)一改全改,/*Constantexample*/#definePRICE25main()intnum,total;PRICE=50;num=10;total=num*PRICE;printf(price=%d,total=%d,PRICE,total)运行结果:price=25,total=250,常量不能被再次赋值,编译时,简单地将“PRICE”替换成“25”,此语句被替换成:25=50,2020年5月25日星期一,常量和变量,四、变量变量:在程序的运行过程中,其值可以被改变的量变量必须用有效的标识符作为名字变量名实际上是存放变量值的存储单元地址的抽象,intsum;,sum,sum=0;,sum=sum+1;,2020年5月25日星期一,常量和变量,四、变量C语言要求对所有变量:先定义,后使用(强制定义),保证程序中的变量名使用正确如:程序在声明部分声明变量student:intstudent;在执行部分错写成studant:studant=30;在编译的时候会检查出studant未定义,不做为变量名,编译时分配相应的存储单元编译时可以检查该变量所进行的运算是否合法如:在程序的声明部分做了如下定义:inta;floatb;在程序的执行部分有下面运算:a%b,编译时会给出相关的出错信息,类型说明符变量列表,intnumber,2020年5月25日星期一,整型数据,一、整型常量的表示十进制如:123,-123,0八进制(以0开头)如:0123表示十进制数83十六进制(以0 x开头)如:0 x123表示十进制数291,2020年5月25日星期一,整型数据,二、整型变量在内存中的存储整型变量在内存中是以二进制补码的形式存放的,inti=10;,intj=-10;,取反,加1,2020年5月25日星期一,整型数据,三、整型变量的种类基本类型:int根据数值的范围分为:int,short,long根据有无符号(singed/unsigned)及范围可分:,2020年5月25日星期一,整型数据,四、整型变量的定义变量定义放在函数开头的声明部分或者函数中某一分程序开头的声明部分。,main()inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(c=%d,d=%d,c,d);,main()inta,b;unsignedu;a=12;b=-24;u=10;intc,d;c=a+u;d=b+u;printf(c=%d,d=%d,c,d);,Compilingc:ex3-2.cError.5:ExpressionsyntaxinfunctionmainError.6:UndefinedsymbolcinfunctionmainError.7:Undefinedsymboldinfunctionmain,main()inta,b;unsignedu;a=12;b=-24;u=10;intc,d;c=a+u;d=b+u;printf(c=%d,d=%d,c,d);,2020年5月25日星期一,整型数据,五、整型数据的溢出一个int型变量允许的最大值是32767,当给32767加1时:,main()inta,b;a=32767;b=a+1;printf(a=%d,b=%d,a,b);,2020年5月25日星期一,整型数据,五、整型数据的溢出一个int型变量允许的最大值是32767,main()inta,b;a=65544;b=a+1;printf(a=%d,b=%d,a,b);,2020年5月25日星期一,整型数据,六、整型常量的类型一个整数,若值在-3276832767范围内,认为是int型一个整数,若在-21474836482148473647范围内,而超过了-3276832767的范围,认为是longint型一个整数,后面加一个字母u或U,认为是unsignedint型如:12345u一个整数,后面加一个字母l或L,认为是longint型如:12345L,2020年5月25日星期一,实型数据,一、实型常量的表示十进制小数形式如:.123123.0.1230.0指数形式如:123e3123E31.23e5注意:e的前面必须有数字,后面必须是整数如:e321.23e2.3e都是不合法的,2020年5月25日星期一,实型数据,二、实型变量在内存中的存储实型变量在内存中以指数的形式存放,一般占4个字节,floatf=3.14159;,3.14159=0.314159101=0.11001001000011111100111101,阶码,小数部分,数符,阶符,2020年5月25日星期一,实型数据,三、实型变量的种类基本类型:float根据数值的范围分为:float(单精度型)double(双精度型)longdouble(长双精度型),main()floata,b;a=12345.6789e5;b=a+20;printf(a=%fnb=%f,a,b);,2020年5月25日星期一,实型数据,四、实型常量的类型C编译系统将一个实数做为double类型处理,main()doublea;floatb;a=2.45678*4523.65;b=2.45678*4523.65;printf(a=%fnb=%f,a,b);,先计算出2.45678*4523.65=1113.612847然后将前7位数赋值给float型的b,2020年5月25日星期一,实型数据,四、实型常量的类型C编译系统将一个实数做为double类型处理可以在实数后面加f或F,表示float型实数,编译系统会按单精度实数(32位)处理如:123.456f456.789F,2020年5月25日星期一,字符型数据,一、字符常量的表示用单引号括起的单个字符如:aB?用“”开头的转义字符,012或xa表示ASCII码为10的“换行”101或x41表示ASCII码为65的字母A000或x00表示ASCII码为0的“空操作”字符,2020年5月25日星期一,字符型数据,二、字符变量在内存中的存储一个字符变量只能存放一个字符定义形式:charc1,c2;赋值:c1=a;c2=n;字符数据在内存中以ASCII码(二进制)的方式存储占一个字节,2020年5月25日星期一,字符型数据,一、字符变量在内存中的存储字符数据可以和整型数据通用,main()charch1,ch2;ch1=97;ch2=98;printf(%c,%cn,ch1,ch2);printf(%d,%dn,ch1,ch2);,2020年5月25日星期一,字符型数据,一、字符变量在内存中的存储字符数据可以和整型数据通用,main()charch;inti;ch=97;i=a;printf(%c,%dn,ch,ch);printf(%c,%dn,i,i);,2020年5月25日星期一,字符型数据,一、字符变量在内存中的存储字符数据可以和整型数据通用,main()/*大小写字母转换*/charc1,c2;c1=A;c2=c1+32;c1=c1+3;printf(%c,%dn,c1,c1);printf(%c,%dn,c2,c2);,2020年5月25日星期一,问题:已知换行的ASCII码值为10,则下列正确表示换行符的方法是:(ch是字符型变量)(A)ch=n;(B)ch=10;(C)ch=12;(D)ch=x10;(E)ch=xa;(F)ch=10;,字符型数据,2020年5月25日星期一,字符型数据,二、字符常量的表示,main()printf(abctderftgn);printf(“htibbjk”);,显示器,abcde,f,hi,j,显示器显示结果的特点:向回返的特殊符号(rb等),并没有清除原有的内容向前进的特殊符号(t空格)或字符修改了原有的内容,2020年5月25日星期一,字符型数据,三、字符串常量字符串常量是一对双撇号括起来的字符序列如:HelloWord!a123.4546e3注意:“a”和a的区别charc;c=a;c=a;,O,2020年5月25日星期一,字符型数据,四、字符串常量的存储C语言将字符0作为字符串的结束标志,0是系统自动加上的,写字符串的时候不必加0,O,2020年5月25日星期一,C语言的运算符,C语言的运算符运算符是描述对数据进行特定运算的符号,2020年5月25日星期一,C语言的运算符,学习运算符应注意的问题:运算符的功能与运算量的关系要求运算量的个数(单目运算符?双目运算符?)要求运算量的类型(整型?实型?字符型?其他类型?)运算符的优先级别结合方向(从左至右?从右至左?)运算结果的类型,2020年5月25日星期一,C语言的表达式,C语言的表达式运算符与运算对象连接在一起就构成了表达式,2020年5月25日星期一,赋值运算符和赋值表达式,简单的赋值运算符:符号:=格式:变量标识符=表达式将一个表达式的值(或一个常量的值)赋给一个变量结合方向:从右至左注意:左边必须是变量,不可以是表达式,2020年5月25日星期一,赋值运算符和赋值表达式,变量赋初值:C语言允许定义变量的同时使变量初始化,变量数据类型变量名变量初值;变量数据类型变量名;变量名变量初值;,若同时给几个变量赋值:,inta=5,b=5,c=5;,2020年5月25日星期一,赋值运算符和赋值表达式,类型转换:将实型值赋值给整型变量时,舍弃小数部分将整型赋值给实型变量时,数值不变,以浮点形式存储到变量中将double型值赋值给float型变量时,截取前面7位有效数字将一个数值(整型或实型)赋值给一个字符型变量时,将数值的低8位赋值给字符变量即可,inta;a=2.845;/*a被赋值2*/,inti;charc;i=289;c=i;printf(i=%dnc=%cn,i,c);,33,2020年5月25日星期一,赋值运算符和赋值表达式,类型转换:将字符型数据赋值给整型变量时,将字符数据(8位)赋值给整型变量的低8位即可若字符最高位为0,则整型变量高8位补0若字符最高位为1,则整型变量高8位补1,inti;charc;c=65;i=c;printf(i=%dnc=%cn,i,c);,inti;charc;c=246;i=c;printf(i=%dnc=%cn,i,c);,2020年5月25日星期一,赋值运算符和赋值表达式,复合赋值运算符:在“=”之前加上其他运算符,就构成了复合赋值运算符有:+=,-=,*=,/=,%=含义:变量标识符op=表达式变量标识符=变量标识符op表达式,a+=3x*=y+8x%=3,a=a+3x=x*(y+8)x=x%3,2020年5月25日星期一,赋值运算符和赋值表达式,赋值表达式的嵌套:,inta,b,c;a=b=c=5;a=5+(c=6);a=(b=4)+(c=6);,inta=b=c=5;,O,c=5,b=c=5,a=b=5c=6,a=5+c=5+6=11b=4,c=6,a=b+c=10,2020年5月25日星期一,赋值运算符和赋值表达式,赋值表达式的嵌套:,inta=12;a+=a-=a*a;,a+=a-=144a+=(a=a144)a+=(a=-132)a=a+a(a=-132)a=(-132)+(-132)a=-264,2020年5月25日星期一,逗号运算符和逗号表达式,逗号运算符:用来将两个表达式连接起来形式:表达式1,表达式2,表达式3,表达式n优先级:(最低)结合方向:从左至右表达式的值:表达式n的值用途:通常用于循环结构的for语句中,2020年5月25日星期一,逗号运算符和逗号表达式,a=3*4,5*2;a=(a=3,5*2);a=1;b=2;c=3;printf(%d,%d,%d,a,b,c);printf(%d,%d,%d,(a,b,c),b,c);,a=12,表达式的值:10a=10输出:1,2,3输出:3,2,3,2020年5月25日星期一,算术运算符和算术表达式,基本的算术运算符:+:加法(或正值)运算符如:3+2,+3.5-:减法(或负值)运算符如:3-2,-3.5*:乘法运算符如:3*2,3.5*2/:除法运算符如:3/2,3.5/2要说明的是:两个整数相除的结果仍为整数:5/3=1若结果为负值,多数机器采用向零取整的办法:-5/3=-1%:模运算符(两个运算量都是整数)如:3%2,2020年5月25日星期一,算术运算符和算术表达式,算术表达式用算术运算符和括号,将运算对象(操作数)连接起来符合C语法规则的式子例如:a*b/c+1.5-3.28+f,2020年5月25日星期一,算术运算符和算术表达式,基本的算术运算符:+,-,*,/,%结合方向:从左至右(左结合性)优先级别:-(负值)*/%+-(减法)说明:整数的算术运算结果仍为整数若算术运算中有一个实数,则运算结果为double型%只能进行整数的取模运算,余数与被除数符号相同“”为负值运算符时(单目运算),为右结合性,234,5/3-3*2+-2.5=,-7.500000,5/2=-5/2.0=5%2=-5%2=5%-2=-5%-2=5%1=5%1.0=,2,-2.500000,1,-1,1,-1,0,O,2020年5月25日星期一,自增、自减运算符,作用:使变量值增1或减1+i-i:先执行i=i+1(或i=i-1),再使用i的值i+i-:先使用i的值,再执行i=i+1(或i=i-1),j=3;k=+j;j=3;k=j+;j=3;printf(%d,+j);j=3;printf(%d,j+);a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;,j=j+1;k=j;结果:k=4,j=4k=j;j=j+1;结果:k=3,j=4j=j+1;输出;结果:输出4,j=4输出;j=j+1;结果:输出3,j=4a=a+1;c=a*b;结果:a=4,c=20c=a*b;a=a+1;结果:a=4,c=15,2020年5月25日星期一,自增、自减运算符,作用:使变量值增1或减1+i-i:先执行i=i+1(或i=i-1),再使用i的值i+i-:先使用i的值,再执行i=i+1(或i=i-1)说明:+和-不能用于常量和表达式+和-的结合方向:自右向左优先级:-(负值),+,-*,/,%,+,-(减法),5+-(a*b),O,234,j=3;printf(%d,-j+);,-j+相当于-(j+),输出:-3,j=4,j=2,k=3;printf(%d,j+k);,j+k相当于(j+)+k输出:5,j=3,k=3,2020年5月25日星期一,各数据类型间的混合运算,整型、实型、字符型数据间的混合运算整型和字符型数据可以通用整型和实型数据可以进行混合运算运算规则:不同类型的数据要先转换成同一类型,char和short型先转成int型float型先转成double型,精度低的转换成精度高的,main()inta=3;floatf=3.14;charc=a;printf(%f,10+c+a*f);,2020年5月25日星期一,强制类型转换运算符,强制类型转换运算符,可以将一个表达式转换成所需类型一般形式:(类型名)(表示式)说明:表达式应当用括号括起来在进行强制转换时,得到一个所需类型的中间变量,原来变量的类型并没有发生变化,(double)a(int)(x+y)(float)(5%3),(int)(x+y)(int)x+y,main()floatx;inti;x=3.6;i=(int)x;printf(x=%fni=%d,x,i);,2020年5月25日星期一,作业,P54习题,
展开阅读全文
相关资源
相关搜索

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


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

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


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