C语言2数据类型运算符表达式.ppt_第1页
C语言2数据类型运算符表达式.ppt_第2页
C语言2数据类型运算符表达式.ppt_第3页
C语言2数据类型运算符表达式.ppt_第4页
C语言2数据类型运算符表达式.ppt_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章数据类型、运算符与表达式,1整型数的二进制表示整型数分为有符号的和无符号的两种;有符号的整型数的正负号由字节的最高位来表示:0表示正数,1表示负数。整型数占用的字节数可为8位、16位或者32位。整型数的取值范围:,2.1用二进制表示的数,2浮点数的二进制表示浮点数分成单精度浮点数和双精度浮点数;单精度浮点数占32位(4个字节),双精度浮点数占64位(8个字节)。浮点型数据的一般表达式:(1)S2eme是实际的阶码值,代表浮点数的取值范围;m是尾数,代表浮点数的精度。,2.1用二进制表示的数,(1)单精度浮点型数据的字节分配空间:,2.1用二进制表示的数,S代表符号位,占1位。E称为“移码”,占8位。E的取值范围为0255,E=127+e因此,e的取值范围为127+128);M代表有效位数或称为“小数”,m2=(1.M)2,(2)双精度浮点型数据的字节分配空间:,2.1用二进制表示的数,S代表符号位,占1位。E称为“移码”,占11位。E的取值范围为02047,E=1023+e因此,e的取值范围为1023+1024);M代表有效位数或称为“小数”,m2=(1.M)2,浮点型数据的取值范围:,2.1用二进制表示的数,1.C语言提供5种基本数据类型。(1)字符型:用char表示。(2)整数型:用int表示。(3)单精度实数型:用float表示。(4)双精度实数型:用double表示。(5)空类型:用void表示。对整数型,有四种修饰:signed(有符号)unsigned(无符号)long(长型)short(短型)数据类型决定了数据的大小、数据可执行的操作以及数据的取值范围。,2.2基本数据类型及取值范围,数据类型的长度和取值范围会随着机器的CPU类型和编译器的不同而不同。,2.2基本数据类型及取值范围,例1:验证数据类型的字节长度。见【例2-1】所示的程序:example2_1.c不同字节长度的数据类型和取值范围:见表2-5和表2-6,2.2基本数据类型及取值范围,2.3常量与变量,标识符:定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度:最长32个字符命名原则:见名知意不易混淆如1、l与I,o与0,例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3charab_above$123,C语言使用常量和变量来表示程序中使用的数据,常量,一般用大写字母是宏定义预处理命令,不是C语句直接常量:整型常量实型常量字符常量字符串常量,如#definePRICE30,定义:程序运行时其值不能改变的量(即常数)分类:符号常量:用标识符代表常量定义格式:#define符号常量常量,例符号常量举例#definePRICE30main()intnum,total;num=10;total=num*PRICE;printf(total=%d,total);,运行结果:total=300,变量,概念:其值可以改变的量。数据及其存储空间的抽象。变量名与变量值变量定义的一般格式:数据类型变量1,变量2,变量n;,变量初始化:定义时赋初值,例:inta,b,c;floatdata;,决定分配字节数和数的表示范围,合法标识符,例:inta=2,b,c=4;floatdata=3.67;charch=A;intx=1,y=1,z=1;intx=y=z=1;,例1intstudent;stadent=19;/Undefinedsymbolstadentinfunctionmain,变量定义位置:一般放在函数开头,变量的使用:先定义,后使用,Error:expressionsyntaxinfunctionmain,变量的赋值,传送数据到变量所代表的存储单元。赋值操作用“=”表示,一般形式为:变量=表达式,如:a=1.0;/*把1.0传送给a*/a=a+1;/*把a的值加上1后传给a*/用赋值号连接变量和表达式的式子称为赋值表达式。赋值符号的运算方向为自右向左。赋值表达式的值是被赋值后的变量的值。如:d=c=b=a=3+5,赋值表达式,整型常量(整常数)三种形式:十进制整数:由数字09和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字07表示.如0123,011十六进制整数:由0 x开头,后跟09,af,AF表示.如0 x123,0Xff,例12与12L,例30000为int型65536为longint型,整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是longint型常量,问题:0123=()100 x123=()100Xff=()10,整型变量分类:有符号数和无符号数。用关键字signed,unsigned指定。基本型、长整型和短整型。用关键字int,long,short指定。字节数和表示范围定义形式:数据类型变量名例子:intx,y;/*定义x,y为整型数*/unsignedshortm,n;/*定义m,n为无符号短整型数*/longa;/*定义a为长整型数*/,整型数据的存储方式shortintlong最高位为符号位,0为正,1为负以二进制补码的形式存放如:10的补码-10的补码,例整型数据溢出includemain()inta,b;a=32767;b=a+1;printf(“%d,%dn,a,b);,运行结果:32767,-32768,说明计算机在运算时,出现数据溢出情况,达到最大值后,又从最小值算起。,整型数据的溢出,字符类型,在计算机中字符以ASCII存放以及运算。其存储为1个字节如:a的ASCII码为97,它在内存中的形式:字符型变量定义方式:chara;表示a为字符型,在内存中占用8位即1个字节,#includemain()inta=97;printf(“%c=%dn”,a,a);,输出:a=97,字符常量定义:用单引号括起来的单个普通字符或转义字符.,字符常量的值:该字符的ASCII码值,如101-A012-n376-x61-a60-0483-(),例:A-101-x41-65,如A65,a97,048,n10,如aA?n101,转义字符:反斜线后面跟一个字符或一个代码值表示,例转义字符举例main()printf(101x42Cn);printf(Isay:Howareyou?n);printf(CProgramn);printf(TurboC);,运行结果:(屏幕显示)ABCIsay:”Howareyou?”CProgramTurboC,例main()printf(“Yb=n”);,运行结果:屏幕显示:=,*/%-+-(2)(3)(4),例-i+i=3;printf(“%d”,-i+);,例-i+-(i+)i=3;printf(“%d”,-i+);/-3,2赋值运算符和表达式,简单赋值运算符符号:=格式:变量标识符=表达式作用:将一个数据(常量或表达式)赋给一个变量,例a=3;d=func();c=d+2;,复合赋值运算符种类:+=-=*=/=%=a+b=3;,例inti;i=2.56;/结果i=2;,例:a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2),/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型赋值表达式的值与变量值相等,且可嵌套,例:a=12;a+=a-=a*a,/a=-264等价于a=a+(a=a-(a*a),3逗号运算符和表达式,形式:表达式1,表达式2,表达式n结合性:从左向右优先级:1逗号表达式的值:等于表达式n的值用途:求多个表达式的连续计算,常用于循环for语句中,例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a=3,6*a例a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,例:#includemain()intx,y=7;intz=4;x=(y=y+6,y/z);printf(x=%dn,x);,运行结果:x=3,4关系运算符和表达式,关系运算符种类:=!=结合方向:自左向右优先级别:9-10运算结果为:1或0,例inta=3,b=2,c=1,d,f;ab;c=ab;b+cb;f=abc;,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,关系运算注意事项:,例若a=0;b=0.5;x=0.3;则a100结果为,1,0,例注意区分“=”与“=”inta=0,b=1;if(a=b)printf(“aequaltob”);elseprintf(“anotequaltob”);,aequaltob,(a=b),anotequaltob,5逻辑运算符和表达式,逻辑运算符种类:!b=5;!aax0,表达式值为axy?1:1.5/xy,值为1.0;xb?a:bD.以上都不对5、与表达式“a!=b|bc”等价的表达式是()A.!(a=bintx;floaty;doublez;则表达式w*x+z-y值的数据类型为()A.floatB.charC.intD.Double7、设x和y都是int类型,且x=100,y=200,则printf(“%d”,(x,y);的输出结果是()A.200B.100C.100200D.输出格式符不够,输出值不确定8、设有以下变量均为int类型,则值不等于7的表达式()A.(x=y=6,x+y,x+1)B.(x=y=6,x+y,y+1)C.(x=6,x+1,y=6,x+y)D.(x=6,y+1,x=y,x+1)9、在C语言中,要求运算符必须是整型的运算符是()A./B.+C.!=200D.%10、下列运算符中优先级最低的是(),优先级最高的是()A.?:B.,运行结果:Enteracharacter:AA-65,2格式输出函数,格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据,输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%修饰符格式字符,用于指定输出格式普通字符或转义序列:原样输出,printf(%c-%dn,c,c);,A-65,inta=65;printf(“%d”,a);,inta=65;printf(“%x”,a);,inta=65;printf(“%o”,a);,inta=65;printf(“%u”,a);,chara=65;printf(“%c”,a);,printf(“%s”,“ABC”);,floata=567.789;printf(“%e”,a);,floata=567.789;printf(“%f”,a);,floata=567.789;printf(“%g”,a);,printf(“%”);,65,41,101,65,A,ABC,5.677890e+02,567.789000,567.789,%,说明格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应输出转换:格式字符与输出项类型不一致,自动按指定格式输出,例main()unsignedintu=65535;printf(u=%dn,u);输出结果:u=-1,例inta=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);,例inta=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输出结果:34a=3,b=4,附加格式说明符(修饰符),格式指示符1类型转换字符d以带符号的十进制整数形式输出。案例类型转换字符d的使用。,#includemain()intnum1=123;longnum2=123456;printf(num1=%d,num1=%5d,num1=%-5d,num1=%2dn,num1,num1,num1,num1);,运行结果:num1=123,num1=123,num1=123,num1=123,#includemain()intnum1=123;longnum2=123456;printf(num2=%ld,num2=%8ld,num2=%5ldn,num2,num2,num2);,运行结果:num2=123456,num2=123456,num2=123456,#includevoidmain()intx=-1;printf(x=%o,x=%d,x,x);,运行结果:x=177777,x=-1,2%o格式符。它的作用是将其对应的表达式的值按照八进制整数方式输出。这个格式符不会输出负数形式。它将符号位也做为八进制的一部分输出。,附加的格式说明符也可以和%o一起使用,看下面几个例子。例子:printf(“x=%5o”,077);运行结果:77printf(“x=%lo”,0 xFFFFF);运行结果:3777777printf(“x=%11lo”,0 xfffff);运行结果:3777777printf(“x=%-11lo”,0 xfffff);运行结果:3777777,3%x格式符。它的作用是将其对应的表达式的值按照十六进制整数方式输出。,printf(x=%x,0 xffff);运行结果:x=ffffprintf(x=%8x,0 xffff);运行结果:x=ffffprintf(x=%lx,0 x7ffff);运行结果:x=7ffffprintf(x=%8lx,0 x7ffff);运行结果:x=7ffffprintf(x=%-8lx,0 x7ffff);运行结果:x=7ffff,4.%u格式符。它的作用是将其对应的表达式的值按照十进制无符号整数方式输出。也可以和上面的m,l,-三种附加格式符组合使用。,printf(x=%u,-1);运行结果:x=65535printf(x=%d,%o,%x,%un,-2,-2,-2,-2);运行结果:x=-2,177776,fffe,65534printf(y=%d,%o,%x,%u,(unsignedint)65535,-1,-1,-1);运行结果:y=-1,177777,ffff,65535,(-2)=1111111111111110(65535)=1111111111111111,5%c格式符。它的作用是将其对应的表达式的值按照字符方式进行输出。如果一个整数的数值范围在0到255之间,也可以用字符方式输出其对应的ASCII码字符。可以和附加格式符组合,printf(x=%c,A);运行结果:x=Aprintf(x=%c,66);运行结果:x=Bprintf(x=%5c,66);运行结果:x=B,6s输出一个字符串。案例类型转换字符s的使用。#includemain()printf(%s,%5s,%-10sn,Internet,Internet,Internet);printf(%10.5s,%-10.5s,%4.5sn,Internet,Internet,Internet);程序运行结果如下:Internet,Internet,InternetInter,Inter,Inter,7f以小数形式、按系统默认的宽度,输出单精度和双精度实数。,#includemain()floatf=123.456;doubled1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf(%f,%12f,%12.2f,%-12.2f,%.2fn,f,f,f,f,f);printf(d1+d2=%lfn,d1+d2);,运行结果:123.456001,123.456001,123.46,123.46,123.46d1+d2=3333333333333.333010,m:显示数据占有的列宽;.n:保留小数位数,存在四舍五入,(1)这个格式符将对应表达式的值的整数部分全部输出,并且输出6位小数。,本案例程序的输出结果中,数据123.456001和3333333333333.333010中的01和010都是无意义的,因为它们超出了有效数字的范围。,16位有效位,8%e格式符。它的作用是将其对应的表达式的值按照指数方式进行输出。,(1)这种方式输出的数据,以规范化浮点数形式输出,尾数(7位含小数点):整数部分只有1位且不能为0,小数位数占6位;指数(4位):字母e占1位,指数的符号位占1位,指数占2位。例如:Printf(“x=%e”,123.456);运行结果:x=(1.23456e+02)(2)这个格式符也可以和m,.n,-三种附加格式符一起使用。含义与%f格式符中这三种附加格式符的含义一样。例如:printf(x=%7e,123.456);运行结果:x=(1.23456e+02)printf(x=%8.1e,123.456);运行结果:x=(1.2e+02)printf(x=%-8.1e,123.456);运行结果:x=(1.2e+02),m:表示以m列宽显示;.n:取的是尾数部分除小数点外的数据位数。,使用说明(1)printf()可以输出常量、变量和表达式的值。但格式控制中的格式说明符,必须按从左到右的顺序,与输出项表中的每个数据一一对应,否则出错。例如,printf(“str=%s,f=%d,i=%fn”,“Internet”,1.0/2.0,3+5,“CHINA”);是错误的。(2)格式字符x、e、g可以用小写字母,也可以用大写字母。使用大写字母时,输出数据中包含的字母也大写。除了x、e、g格式字符外,其它格式字符必须用小写字母。例如,%f不能写成%F。(3)格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出)。例如,“printf(”c=%c,f=%fn“,c,f);”中的第一个c和f,都是普通字符。,例m.n,例floatf=123.456;charch=a;printf(“%f,%8f,%8.1f,%.2f,%.1en”,f,f,f,f,f);printf(“%3cn”,ch);,运行结果:123.456001,123.456001,123.5,123.46,1.2e+02a,例staticchara=“Hello,world!”printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);,运行结果:Hello,world!Hello,world!HelloHelloHel,例floatf=123.456;staticcharc=“Hello,world!”;printf(“%10.2f,%-10.1fn”,f,f);printf(“%10.5s,%-10.3sn”,c,c);,运行结果:123.46,123.5Hello,Hel,例-,例inta=1234;floatf=123.456;printf(“%010.2fn”,f);printf(“%0+8dn”,a);printf(“%0+10.2fn”,f);,例0、+,例inta=123;printf(“%o,%#o,%X,%#Xn”,a,a,a,a);,例#,例longa=65536;printf(“%d,%8ldn”,a,a);,例l,/0000123.46,/+0001234,/+000123.46,/173,0173,7B,0X7B,/0,65536,3格式输入函数,格式:sc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论