




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章数据类型及基本运算,2.1C数据类型2.2基本数据类型2.3数据的表示2.4基本运算符和表达式2.5常用的库函数,2.1C数据类型,2.2基本数据类型,2.3数据的表示,2.3.1常量在程序运行过程中,其值不能被改变的量称为常量。1.值常量(直接常量)23000000002.31092.3E+9,2.符号常量定义形式:例:#define标识符值常量#definePI3.1416const数据类型标识符=值常量;constfloatPI=3.1416;3.常用的转义字符,1.变量的说明在语言中,要求对所有用到的变量,必须先说明(定义)后使用。变量说明的一般格式数据类型符变量名列表;例如:floatradius,length,area;2.变量赋初值(1)在说明变量的同时对其赋初值例如:floatradius=2.5,length,area;(2)先说明,后赋值例如:floatradius,length,area;radius=2.5;length=3.3;radius=radius+3.6;,2.3.2变量,2.4常用的运算符和表达式,2.4.1算术运算符和算术表达式,1.算术运算符,例如:a=5;b=4;c=a+/-b;d=a%4;,结果:a=6b=3c=1d=2,优先级:指同一个表达式中不同运算符进行计算时的先后次序。结合性:是指相同优先级的多个运算符的求值顺序。,算术运算符的运算优先级与结合性,2.算术运算符的运算优先级与结合性,由算术运算符和圆括号将运算对象(常量、变量和函数等)连接起来的、符合语言语法规则的式子,称为算术表达式。例2.4,算术表达式g*t*t/2.0Sqrt(x1*x1+x2*x2)(a+b+c)/(sqrt(b)+b*(sin(x)+sin(y),数学代数式,3.算术表达式,在语言中,整型、实型和字符型数据间可以混合运算(因为字符数据与整型数据可以通用)。(1)自动类型转换(隐式类型转换)。如果一个运算符两侧的操作数的数据类型不同,则系统按“先转换、后运算”的原则,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。转换规则如下图所示。,double,long,unsigned,int,高级,低级,float,char,short,4.算术型数据的混合运算,1)横向向左的箭头,表示必须的转换。char和short型必须转换成int型,float型必须转换成double型。2)纵向向上的箭头,表示不同类型的转换方向。例如,int型与double型数据进行混合运算,则先将int型数据转换成double型,然后在两个同类型的数据间进行运算,结果为double型。注意:箭头方向只表示数据类型由低向高转换,不要理解为int型先转换成unsigned型,再转换成long型,最后转换成double型。(2)强制类型转换(显式类型转换)。强制转换的一般格式为:(要转换成的数据类型)(被转换的表达式)当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。,例如,(double)a等价于(double)(a)/*将变量a的值转换成double型*/(int)(x+y)/*将x+y的结果转换成int型*/(float)5/2等价于(float)(5)/2/*将5转换成实型,再除以2(=2.5)*/(float)(5/2)/*将5整除2的结果(2)转换成实型(2.0)*/注意:强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,(double)a只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。,(1)自增运算(+)使单个变量的值增,自减运算(-)使单个变量的值减。自增、自减运算符都有两种用法:前置运算运算符放在变量之前:先使变量的值增(或减),然后再以变化后的值参与其它运算,即先增减、后运算。后置运算运算符放在变量之后:变量先参与其它运算,然后再使变量的值增(或减),即先运算、后增减。自增、自减运算符运算对象只能是整型、字符型、指针型变量。不能是常量或表达式。自增、自减运算符的优先级高于其他所有双目运算符。(2)两个整数相除,结果自动取整,丢弃小数部分。(3)求余(模)运算符%的运算符运算对象只能是整型,且被除数是负数时结果为负数。例:5%-3=2,-5%3=-2,5注意事项,例:自增、自减运算符的用法与运算规则示例。main()intx=6,y;printf(x=%dn,x);/*输出x的初值*/y=+x;/*前置运算*/printf(y=+x:x=%d,y=%dn,x,y);y=x-;/*后置运算*/printf(y=x-:x=%d,y=%dn,x,y);程序运行结果:x=6y=+x:x=7,y=7y=x-:x=6,y=7,1.基本赋值运算符符号“=”就是基本赋值运算符,它的作用是将一个表达式的值赋给一个变量。赋值运算符的一般形式为:变量=赋值表达式例如,x=5y=(float)5/2如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。赋值运算符的结合方向为自右向左。例如:inta,b=1;则a=b+(b=5);的结果b=5,a=10,2.4.2赋值运算符与赋值表达式,复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。复合赋值运算的一般格式为:变量双目运算符=表达式复合赋值运算符它等价于:变量=变量双目运算符(表达式)。当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。例如:x+=3/*等价于x=x+3*/y*=x+6/*等价于y=y*(x+6),而不是y=y*x+6*/C语言规定的10种复合赋值运算符如下:+=,-=,*=,/=,%=;/*复合算术运算符*/则下面两个表达式:a=20+(j=7)/*j被赋值为7,a被赋值为27(即表达式的值),括号不能省*/a=(j=9)+(k=7)/*k被赋值为7,j被赋值为9,a被赋值为16(即表达式的值),k=7的括号不能省,j=9的括号可省,但结果不同*/,3.赋值表达式,在语言中,逗号“,”除作为分隔符外,还可以作为运算符。逗号运算符的运算顺序是自左向右。用逗号“,”连接起来的式子,称为逗号表达式。一般形式:表达式,表达式,表达式n求解过程:自左至右,依次计算各表达式的值,“表达式n”的值即为整个逗号表达式的值。例如,逗号表达式“a=3*5,a*4”的值=60:先求解a=3*5,得a=15;再求a*4=60,所以逗号表达式的值=60。又如,逗号表达式“(a=3*5,a*4),a+5”的值=20:先求解a=3*5,得a=15;再求a*4=60;最后求解a+5=20,所以逗号表达式的值=20。思考:intj=5;a=(a=j+1,a+2,a+3);结果a的值=?,2.4.3逗号运算(,)及其表达式,所谓“关系运算”实际上就是“比较运算”,即将两个数据进行比较,判定两个数据是否符合给定的关系。例如,“ab”中的“”表示一个大于关系运算。如果a的值是5,b的值是3,则大于关系运算“”的结果为“真”,即条件成立;如果a的值是2,b的值是3,则大于关系运算“”的结果为“假”,即条件不成立。1关系运算符C语言提供6种关系运算符:,=,=!=小于小于等于大于大于等于等于不等于同级同级高低注意:在语言中,“等于”关系运算符是双等号“=”,而不是单等号“=”(赋值运算符)。,2.4.4关系运算符和关系表达式,2.关系表达式所谓关系表达式,是指用关系运算符将两个表达式连接起来,进行关系运算的式子。例如,下面的关系表达式都是合法的:ab,a+bc-d,(a=3)=b,(ab)=(bc)关系表达式的值逻辑值(非“真”即“假”)。由于语言没有逻辑型数据,所以用整数“”表示“逻辑真”,用整数“”表示“逻辑假”。关系运算符的结合性为左结合。关系运算符的优先级,低于算术运算符,但高于赋值运算符。例:a=3num2的值=0。(2)(num1num2)!=num3的值=1。(3)num1num2num3的值=1。思考题:任意改变num1或num2的值,会影响整个表达式的值吗?为什么?(4)(num1num2)+num3的值=6,因为num1=0”、同时“x=0)&(x5)的值为“假”。,2.逻辑表达式所谓逻辑表达式,是指用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。在C语言中,用逻辑表达式表示多个条件的组合。例如,下面的表达式都是逻辑表达式:(x=0)&(x5),!(x=0),(year%4=0)&(year%100!=0)|(year%400=0),逻辑表达式的值也是一个逻辑值(“真”或“假”,即1或0)。例如:当year=1996时,逻辑表达式(year%4=0)&(year%100!=0)|(year%400=0)的值为1当year=1997时,逻辑表达式的值为0,3.逻辑表达式的求值顺序,1位运算符,2.4.6位运算符和位表达式,2位运算符求值规则,3位运算符的优先级&|,高,低,2.5常用的库函数,2.5.1库函数的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人才日活动策划方案模板
- 东莞入企咨询方案
- 传媒艺考活动策划方案
- 水产养殖行业技术规范总结
- 软件著作权转让协议
- 2025结构工程师检测卷(历年真题)附答案详解
- 2025国家统一法律职业资格考试考试真题及答案
- 中考语文小说阅读赏练-梁晓声小说(含解析)
- 诚信与谎言话题作文(13篇)
- 2025计算机一级考前冲刺练习试题及完整答案详解(夺冠系列)
- 2025-2026学年地质版(2024)小学体育与健康二年级(全一册)教学设计(附目录P173)
- 茶百道培训课件
- 2025至2030年中国制药装备行业市场全景分析及投资前景展望报告
- 2025北京京剧院招聘工作人员10人考试备考题库及答案解析
- 检修现场管理培训课件
- 2025年食品安全人员在线考试试题及答案
- 多重耐药菌感染患者的护理LP
- 信息网络安全考题「附答案」
- 2025年度国务院国资委干部教育培训中心招聘(2人)笔试备考试题及答案详解(历年真题)
- 2025司法协理员考试模拟题及答案
- 消防设备设施操作讲解培训课件P
评论
0/150
提交评论