已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第3章数据类型、运算符及表达式,基本数据类型的存储方式和表示方式不同类型间数据转换的原则与方法有关运算符与表达式的运用,2,一个C程序是由一个或多个函数组成,函数体由若干条C语句组成,那么,C语句又是由什么组成?,思考,主函数函数n,C语句1C语句2C语句n,关键字标识符字符集,C程序,3,注意:所有关键字都要用小写英文字母表示,且不允许被用作标识符使用!,autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile,关键字,4,标识符,标识符是由英文字母、数字及下划线构成的字符串,并且首字符必须为字母或下划线。用来标识常量、变量、函数名、数组名、类型定义符等。注意:关键字是用户标识符的禁区!命名原则:见名知意!大小写有区别!不同C语言版本允许的长度不一样ANSIC为8个字符TurboC为32,5,练习:请找出不合法的标识符.,unionabc_1232ab3d+babc8*INT,stu_bc8abcdefghi-s10*r=2.5;a=PI*r*r;c=2*PI*r;printf(“r=%f,a=%f;c=%fn”,r,a,c);,10,关于变量,变量的定义变量是程序执行过程中其值可以改变的量。变量的分类整型变量实型变量字符变量变量的命名(同标识符的命名)变量的使用先定义后使用,每一个变量指定为一确定类型含义清楚countnameday一般用小写字母表示,11,3.3整型数据int,三种形式:十进制数如:12、345、0八进制数(以0开头)如:012、045十六进制数(0 x开头)如:0 x12、0 x345,整型常量,0123()100X123()100XFF()10,83,255,291,例30000为int型65536为longint型,例12与12L,整型常量的类型:根据其值所在范围确定其数据类型;,在整常量后加字母L或l,认为它是longint型常量。,十进制无符号整常数的范围为065535,有符号数为3276832767八进制无符号数的表示范围为00177777十六进制无符号数的表示范围为0X00XFFFF,12,整型常量举例,#includevoidmain()printf(“%d,%o,%xn”,123,123,123);printf(“%d,%o,%xn”,023,023,023);printf(“%d,%o,%xn”,0 x12,0 x12,0 x12);,例:整型常量的不同进制表示。,%d,%o,%x是输入输出的格式字符串d表示十进制o表示八进制x表示十六进制,上述程序中的n表示输出后回车换行!,13,分类基本型(int)短整型(shortint、short)长整型(longint、long)无符号型无符号整型(unsignedint)无符号短整型(unsignedshort)无符号长整型(unsignedlong),整型变量,取值范围-3276832767-3276832767-21亿21亿065535065535042亿,所占位数161632161632,14,整型变量在内存中存储,高字节,低字节,符号位0表示正整数1表示负整数,采用补码表示正整数补码与原码相同负整数补码=原码(取反)+1,例如470 x2F原码0000,0000,0010,1111取反1111,1111,1101,0000加1得到-47的补码1111,1111,1101,0001,取值范围:-215215-1-3276832767,15,整型变量定义,定义形式数值类型变量名表;说明数值类型即类型说明符int、short、long等。变量名表可为一个或多个变量名,之间用逗号间隔。变量被定义后,其取值范围也被确定。,#includevoidmain()inta,b,c;a=4;b=5;c=a*b;printf(“a*b=%dn”,c);,等价于:inta;intb;intc;,16,#includevoidmain()inta,b;a=32767;b=a+1;printf(“%d,%d”,a,b);,运行结果:32767,32768,a:,b:,整型数据的溢出,32767,-32768,溢出不报错会出现不可预料后果,17,使用整型数据时的注意事项:,若某系统的C版本确定shortint与int型数据在内存中占据的长度相同,则二者等价。一个int型常量(-3276832767)可以赋值给int型变量或long型变量。其值在-231231-1内,而在-215215-1外的整数只可赋值给long型变量。inta;a=111111;不报错但结果不对常量无unsigned型,但一个非负整数可赋值给unsigned型整数变量,但要注意值的范围。unsigneda;a=10;不报错但结果不对长整型数的表示方法是在数值后面加字母l或L,如234L。不同的数据类型有不同的存储字长,使用时注意其取值范围。,18,3.4浮点型数据,浮点型常量即实数。以十进制形式表示。表示形式小数形式:由数字和小数点组成如1.56、-0.231指数形式(科学计数法):小数E(或e)整数“小数”表示实数的数值位,即尾数部分。“E”代表十进制数的基数10。“整数”表示10的乘幂。,浮点型常量,1.23103,3.918e-2,1.23E3,3.91810-2,注意:字母E之前必须有数字!,19,浮点型变量,分类单精度(float)双精度(double)长双精度(longdouble),有效数字7位1516位1819位,所占位数3264128,变量的定义floatx,y;/*指定x,y为单精度浮点型变量*/doublez;/*指定z为双精度浮点型变量*/,浮点型常量不分单、双精度,都按双精度double处理。一个浮点型常量可以赋给一个float型或double型,根据变量的类型截取浮点型常量中相应的有效位数字。,如:floata;a=123456.123;,20,浮点型数据的舍入误差,由于浮点型变量的存储单元有限,因而小数部分的有效数字是有限的,超过部分将舍去。,/*例3.4*/#includevoidmain()floata,b;a=123456.789E5;b=a+20;printf(“%f”,b);,运行结果:12345678848.000000,避免大数与很小数直接加减判断两个浮点型变量是否相等,是判断二者的差的绝对值是否小于一个很小的数,21,变量初始化:定义时赋初值,变量的使用:先定义,后使用,变量定义位置:一般放在函数开头,例:inta=2,b,c=4;floatdata=3.67;charch=A;intx=1,y=1,z=1;intx=y=z=1;,例1intstudent;stadent=19;/Undefinedsymbolstatentinfunctionmain,例2floata,b,c;c=a%b;/Illegaluseoffloatingpointinfunctionmain,22,3.5字符型数据,概念:指用单引号(撇号)括起来的单个字符。例ab=5字符常量的值:该字符的ASCII码值,字符常量,字符常量的分类一般字符常量x?aA2转义字符常量以一个反斜杠“”开头的字符序列,有特定含义。,ASCII码(见教材P364附录A)8位对字符编码,码值0-255032为控制字符(不可印刷字符)33-255为可印刷字符128-255为扩展ASCII码,23,转义字符常量表,101-A012-n376-x61-a60-0483-(),24,#includevoidmain()printf(101x42Cn);printf(Isay:Howareyou?n);printf(CProgramn);printf(TurboC);,运行结果:(屏幕显示)ABCIsay:”Howareyou?”CProgramTurboC,例#includevoidmain()printf(“Yb=n”);,运行结果:屏幕显示:=打印机输出:,转义字符的使用,25,运行结果:屏幕显示:,屏幕输出在后面的字符会取代原来屏幕上该位置上显示的字符,#includevoidmain()printf(“_ab_ct_derftgn);printf(htibbj_k);,打印机输出:,f,a,b,c,g,d,e,h,j,i,k,转义字符的使用,26,字符变量,关于字符变量字符变量用来存放字符常量。一个字符变量只能存放一个字符常量。一个字符变量在内存中占用一个字节的空间。,字符变量的定义格式:char变量名表;,字符变量的赋值:变量名字符常量;变量名整型数据;举例:charc;charch1,ch2;c=97;ch1=B;ch2=C;,27,#includevoidmain()charc1,c2;c1=97;c2=98;printf(“%c,%cn”,c1,c2);printf(“%d,%dn”,c1,c2);,#includevoidmain()charc1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c,%c”,c1,c2);,运行结果:A,B,字符变量存放字符ASCII码char与int数据间可进行算术运算char与int数据可以相互赋值,运行结果:a,b97,98,28,#definePRICE12.5#includevoidmain()intnum=3;floattotal;charch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn”,total,ch1);,运行结果:total=37.50000,ch1=d,29,分类基本型(int)短整型(shortint、short)长整型(longint、long)无符号型无符号整型(unsignedint)无符号短整型(unsignedshort)无符号长整型(unsignedlong),整型变量,取值范围-3276832767-3276832767-21亿21亿065535065535042亿,所占位数161632161632,30,浮点型变量,分类单精度(float)双精度(double)长双精度(longdouble),有效数字7位1516位1819位,所占位数3264128,31,字符变量,关于字符变量字符变量用来存放字符常量。一个字符变量只能存放一个字符常量。一个字符变量在内存中占用一个字节的空间。,字符变量的定义格式:char变量名表;,字符变量的赋值:变量名字符常量;变量名整型数据;举例:charc;charch1,ch2;c=97;ch1=B;ch2=C;,32,概念:字符串常量是指用一对双引号括起来的字符序列。如“Hello”、“good”等。字符串常量的存储:系统自动在字符串的末尾加上一个字符串结束标记0,以此判断字符串是否结束。程序中长度为n个字符的字符串常量,在内存中需要用n+1个字节空间来存储它。,字符串常量,例字符串“string”的存储,33,字符常量与字符串常量的区别,二者表示形式不同。字符常量的定界符是,而字符串常量的定界符是“”。如:a是字符常量,而“a”是字符串常量。存储空间不同。一个字符常量只占1个字节,而一个含有单个字符的字符串常量需要占用2个字节。如:a在内存中只占1个字节,“a”则需占用2个字节空间。不允许将一个字符串常量赋给一个字符型变量。如:ch=a是正确的;而ch=“a”不正确。,34,允许定义变量的同时使变量初始化例如:inta=3;等价于inta;a=3;允许只对其中一部分变量赋初值例如:inta=3,b,c=4;charch1=x,ch2;若有几个变量初值相同,必须分别赋值例如:inta=2,b=2,c=2;,3.6变量赋初值,inta=b=c=2;,对字符型变量初始化时,既可以将字符用单引号括起来直接赋值,也可以使用该字符的ASCII码进行赋值。例如:charch=A;等价于charch=65;,35,变量的地址,程序运行时,变量的值以二进制的形式存储在内存中。存储空间的大小由变量的数据类型决定。,内存的编址:内存分为若干个存储单元。每个单元存放一个字节的数据。每个单元有唯一的一个地址。变量存放在内存单元中,若变量所占空间包括多个存储单元,则把首地址作为变量地址。,36,不同类型的数据混合运算,先转换成同一类型,然后进行运算。,3.7各类数值型数据间的混合运算,double,float,long,unsigned,int,char,short,必定的转换,不同类型数据转换方向,37,隐式转换运算转换-不同类型数据混合运算时赋值转换-把一个值赋给与其类型不同的变量时输出转换-输出时转换成指定的输出格式函数调用转换-实参与形参类型不一致时转换显式转换(强制转换)一般形式:(类型名)(表达式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变可能发生较高类型向较低类型转换,不同类型数据间的转换,/*例3.8*/#includevoidmain()floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);,结果:x=3.600000,i=3,38,例如:习题3.9(1)x+a%3*(int)(x+y)%2/4x=2.5,a=7,y=4.7,2.5+7%3*(int)(2.5+4.7)%2/4,2.5+7%3*(int)(7.2)%2/4,2.5+1*7%2/4,2.5+7%2/4,2.5+1/4,2.5+0,2.5,39,按照运算类型分算术运算符+、-、*、/、%关系运算符、=、|、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;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,自增、自减运算符+-,使变量值加1或减1,+i,-i(在使用i前,使i的值加减1)i+,i-(在使用i后,使i的值加减1),说明:+-不能用于常量和表达式,只能用于变量。如5+,(a+b)+是不合法的结合方向:自右向左优先级:-+-*/%-+-,例-i+-(i+)i=3;printf(“%d”,-i+);,44,(1)k=34512a=6,(2)k=3339a=6,例:设a=3,若执行语句k=(a+)+(a+)+(a+)后的k值为多少?,turboc运行结果,例:i+j=(i+)+j还是=i+(+j)?,c编译系统将尽可能多的将多个字符组成一个运算符,并按自左而右的方法,为避免误解最好采取都能理解的方法,写成(i+)+j;,45,3.9赋值运算符和赋值表达式,简单赋值运算符=,变量标识符=常量或表达式,说明:“”是一个双目运算符,需要左右两个运算量。“”是赋值运算符,不等于等号,没有相等的含义。“”左端的运算量必须是单个变量,而不能是表达式。赋值运算中,使运算符左端的变量具有右端表达式的值。,46,(1)a=a+1;等价于:a+;(2)a=b=c=2;连续赋值等价于:a=(b=(c=2);或者:a=2;b=2;c=2;(3)a=2+(b=3);等价于:b=3;a=2+3=5;(4)a=(b=2)*(c=3);等价于:b=2;c=3;a=2*3=6;,允许赋值表达式中含有另外的赋值表达式,进行连续赋值,举例,47,a+=3,a=a+3,x*=y+8,x=x*(y+8),x%=3,x=x%3,复合赋值运算符,+=*=/=%=a+b=3;,a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2),/表达式值为5,a,b,c值为5,/b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,a+=a-=a*a,(),a+=a*=a-=a*=3,(),(),(),优先级:很低,仅高于逗号运算符左侧必须是变量,不能是常量或表达式,赋值表达式的值与变量值相等,且可嵌套,49,赋值运算中数值类型的转换,int=float:舍弃实数的小数部分。,inti=3.56;,i=3,floatf=23;,f=23.0000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年海南卫生健康职业学院单招职业适应性考试必刷测试卷及答案1套
- 2026年常州工程职业技术学院单招职业技能测试题库附答案
- 2026年山东省烟台市单招职业适应性测试题库完美版
- 2025广东深圳市光明区招聘党建组织员11人参考题库及答案详解(基础+提升)
- 2025年河南省医学科学院控股有限公司第二批公开招聘8人参考题库及参考答案详解一套
- 2026年内蒙古呼伦贝尔市单招职业适应性测试必刷测试卷完美版
- 广东消防考试题库及答案
- 2026年山西经贸职业学院单招职业倾向性考试必刷测试卷带答案
- 2025年甘肃省省直事业单位招聘考试真题试卷 公共基础知识及答案详解参考
- 2025广东惠州市博罗县自然资源局招聘编外人员76人参考题库附答案详解(综合题)
- 2025中数联物流科技(上海)有限公司招聘考试参考试题及答案解析
- 2025河北农业大学第二批招聘102人考试笔试参考题库附答案解析
- 2025北京市实验动物上岗证试题及答案
- 读书分享成品《窗边的小豆豆》课件
- 【2025年】员工食堂培训试题及答案
- 财务会计基本规范与操作手册
- DG-TJ08-401-2025 公共厕所规划和设计标准
- 见义勇为宣传课件
- 说话的艺术课件
- 【MOOC】金融风险管理-中央财经大学 中国大学慕课MOOC答案
- MOOC 创新与创业管理-南京师范大学 中国大学慕课答案
评论
0/150
提交评论