已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章操作及其控制,4.1基本操作与运算符4.2表达式4.3语句4.4预处理指令,学习目的:掌握基本数据类型与操作;掌握C+的主要语句;熟练掌握C+提供的顺序控制;熟悉include等预处理指令。,4.1基本操作与运算符,4.1.1赋值操作4.1.2算术操作4.1.3增1(减1)操作4.1.4关系、逻辑操作4.1.5条件运算符,操作又称为运算,通用程序设计语言提供多种操作,每种操作都用运算符标记,如:加(+)、减(-)、乘(*)、除(/)等算术运算,以及指针运算、移位等各种语言特有的操作。运算符分类:根据操作数个数:单目运算符、双目运算符及三目运算符;按照功能不同:算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符等另外,可按优先级和结合性对算符进行分类。,4.1.1赋值操作,注意:对于字符串的赋值采用memset()、memcpy()、strcpy()等函数进行。,intnVar(0);nVar=4;nVar=nVar+2;nVar+=2;int*pN=,赋值操作用于改变数据对象的值,基本类型变量的赋值操作一般由赋值符=表示,其具体语义是将=左侧数据对象的值改变为=右侧表达式的值(常数为表达式的一种形式):,4.1.2算术操作,注意:对整型数据的除法操作,其结果为整型数据,例如:5.0/2.0=2.5、2.0/4=0.5,但5/2=2、2/4=0,相当于进行除法后保留商的整数部分。,包括加、减、乘、除、取负、取余数,分别以+、-、*、/、-、%等运算符代表。,其中%的操作数要求为int型,而其它运算符要求操作数为基本数据类型或指针类型等。复杂运算的书写规则与人类的习惯相似:3+4n*(x+4)对于用户自定义类型或构造类型,需要由用户重新给出上述运算符所代表的具体操作(运算符重载)。,4.1.3增1(减1)操作,1.前缀增1(减1)运算符,格式为:+prefix_exp-prefix_exp,要求操作数prefix_exp是整型、浮点型或指针型,并且必须是一个可修改的左值表达式(即表达式没有const属性),例如整型变量等。前缀增1(减1)操作结果的类型与操作数类型相同,且结果是左值,运算后prefix_exp的值加(减)1,表达式的值同此。因此x=+Val相当于x=Val+1和Val=Val+1两个操作的复合,例如当变量Val的值为5时,表达式x=+Val的结果是x的值为6,Val的值也为6。,intn=0;+n;+(+n);,4.1.3增1(减1)操作,2.后缀增1(减1)运算符,格式为:postfix_exp+postfix_exp-,对操作数postfix_exp的要求与前缀增1(减1)运算符相同。运算结果类型与操作数类型相同,但不再是左值。,intn=0;n+;+n;(n+)=2;,4.1.4关系、逻辑操作,这两种操作经常出现在条件判断中,关系操作有六种:(大于)=(大于等于)2的值为true。逻辑操作有三种:,4.2表达式,4.2.1隐含类型转换4.2.2强制类型转换4.2.3表达式内的顺序控制4.2.4运算符的优先级4.2.5运算符的结合性,运算符与操作数相结合形成的式子称为表达式。常见的简单表达式有算术表达式、逻辑表达式、关系表达式、赋值表达式等。简单表达式通常由一个运算符与一两个操作数构成,用来表述算法中最基本的简单操作。复杂的表达式由多个表达式复合而成,它们可以用来描述算法中的一个模块或者是复杂的处理。任何表达式在运算后都会产生一个结果,这个结果具有某种类型和数值,称作表达式的类型和值。,4.2.1隐含类型转换,intunsignedlongunsignedlongfloatdouble,上述类型中int类型最低,double类型最高,当低类型和高类型同时出现在一个运算符操作数中时,低类型将被转换为高类型,例如当算术运算符两个操作数中有一个的类型为double时,则运算前另一个操作数将被转换成double类型,然后进行浮点型的算术运算,运算后的结果也将为double型;总之,计算算术表达式的值时,如果两个操作数的类型不同,所采用的方针是用存储宽度较大的类型存放存储宽度较窄的操作数,这样做的目的是为了不丢失信息。,每个表达式的值都具有确定类型,取决于运算符的种类和操作数类型,当二目运算符的两个操作数类型不同时,不能直接进行运算,必须进行适当的类型转换。对于基本数据类型,这种类型转换通常为语言所内建,因此称为隐含类型转换。隐含类型转换的规律是将低类型的操作数转换为高类型,对算术运算符而言,常见类型的高低顺序如下:,4.2.2强制类型转换,当操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需的类型。强制类型转换具有两种形式,称为显式强制转换和隐式强制转换。,1.显式强制类型转换,格式为:type()或(type)type为类型描述符,如int、float等。为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未被改变,例如:intnVar=0 xab65;charcChar=char(nVar);上述强制类型变换的结果是将整型值0 xab65的高端两个字节去掉,而将低端两个字节的内容作为char型数值赋值给变量cChar,经过类型变换后nVar的值并没有发生改变。,4.2.2强制类型转换,2.隐式强制类型转换,隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右侧操作数强制转换为赋值符左侧操作数类型的数值后赋值给赋值符左侧的变量。在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后表达式的数值强制转换为函数返回值类型后再将值返回。例如:,intnVar;doubledVar=3.88;nVar=dVar;/执行本语句后,nVar的值为3,而dVar仍然是3.88,4.2.3表达式内的顺序控制,表达式的值与操作数类型有关,也与运算顺序有关。,应用括号直接控制表达式中子表达式的求值顺序,能够避免运算结果的不确定性。例如:按习惯a*b/c可以利用括号写成(a*b)/c,否则有可能理解为a*(b/c),这两个表达式的值通常是不一样的,比如(3*2)/3=2,而3*(2/3)=0。,4.2.4运算符的优先级,制定运算符的优先级的目的是解决表达式语义的二义性,高优先级运算符所代表的操作先进行、低优先级运算符代表的操做的后进行,在一定程度上可以解决二义性问题。,+、-、*、/等4种基本操作的执行顺序与人们所习惯的四则运算规则相同。常用运算符的优先级如下:,4.2.5运算符的结合性,只有单目运算符、条件运算符和赋值符是右结合的,其他运算符均为左结合。,结合性用于多个具有相同优先级运算符出现在一起时运算顺序的控制,具有左结合性的运算符左边优先于右边,因此将从左至右逐个运算符地进行运算,而具有右结合性的运算符的运算顺序与此相反。,a=b=c等价于a=(b=c)a+b+c等价于(a+b)+c3+4+5-8等价于(3+4)+5)-83*4/5*8等价于(3*4)/5)*83*4*8/5等价于(3*4)*8)/5,4.3语句,4.3.1表达式语句4.3.2语句间顺序控制4.3.3复合语句4.3.4选择语句4.3.5循环语句4.3.6直接顺序控制,语句是构成程序的基本单元,简单语句用于表示一种单一功能的操作,复合语句、选择语句、循环语句等复杂语句可能代表多个操作组成的一种复杂操作或功能。语句由单词按照语句的语法规则组成,单词间以分隔符、运算符或若干个空格符分隔,语句通常以一个特殊的符号结束,例如C+的语句以分号做为结束标志。,4.3.1表达式语句,表达式语句(ExpressionStatement)的形式很简单,在C+中,只要在任何表达式的结尾缀以分号;就构成了表达式语句。例如:x=10*y;l=5,m=6,n=7;mb=a/增1语句,4.3.2语句间的顺序控制,作为算法实现工具,通用程序设计语言通常都提供描述算法三种基本控制结构的具体方式,使用三类语句构成程序的三种基本控制结构:,顺序结构使用顺序语句实现。顺序语句指一组语句的执行顺序与语句的物理排列顺序相同。选择结构使用选择语句加以实现。选择有两种形式:条件语句和开关语句。循环结构使用循环语句加以实现。循环语句有三种形式:do语句、for语句和while语句,4.3.3复合语句,复合语句是由花括号,及其内部语句组成,作为一个整体在语法上是一条语句,尽管其内部可能包含多条语句。复合语句具有明显的块特色,所以也称为块语句。复合语句可以嵌套,即复合语句的内部可以含有其他复合语句。复合语句可以单独使用,将程序的一部分利用扩起来作为相对独立的一块形成良好的编程风格,但更常用于if语句、switch语句或循环语句中。另外,如果在复合语句中嵌入了一条或多条说明变量,则常称这种复合语句为分程序或块结构。,4.3.4选择语句,1条件语句,从上述语法图可得两种常用形式:格式一:if()格式二:if()else,if(a=8)b=9;elseif(a=9)b=20;elseif(a=10)b=21;elseb=30;,4.3.4选择语句,2开关语句,例4.1编程统计输入流中字符A的数目,字符A与a的数目,输入字符总数。#includeiostream.hvoidmain()intnA(0),nAa(0),nTotal(0);for(;)charc;coutc;switch(c)case033:/EnterESCtoterminategotoTermination;caseA:nA+;casea:nAa+;default:nTotal+;Termination:coutThetotalnumberofAisnAendl;coutThetotalnumberofAandaisnAaendl;coutThetotalnumberofcharactersisnTotali;switch(i)case-1:nNegtive+;break;case0:nZero+;break;case1:nPositive+;break;case100:gotoTermination;default:coutIllegalinteger!endl;Termination:coutThetotalnumberof-1isnNegtiveendl;coutThetotalnumberof0isnZeroendl;coutThetotalnumberof1isnPositiveendl;,4.3.5循环语句,1.for语句,例4.3用for循环计算自然数110之和。#includevoidmain()intnSum(0);for(inti=1;i=10;i+)nSum+=i;/1到10循环coutThesumisnSumendl;/显示结果,4.3.5循环语句,2.while语句,例4.4用while循环计算自然数110之和。#includevoidmain()inti(0),nSum(0);while(i=10)/1到10循环nSum+=i;i+;coutThesumisnSumendl;,4.3.5循环语句,3.do语句,例4.6用do循环计算自然数110之和。#includevoidmain()inti(0),nSum(0);donSum+=i;while(+i=10);/1到10循环coutThesumisnSumbij;/FollowingsforcalculatingandoutputingtheelementsofmatrixccoutendlendlTheproductmatrixis:tendl;for(i=0;i5;i+)for(j=0;j6;j+)for(k=0;k4;k+)cij+=aik*bkj;coutcijt;coutendl;,4.3.6直接顺序控制,1.goto语句,3.continue语句,2.break语句,#includevoidmain()intnCount(0);intnCtrl(0);MyLabel:nCtrl+;nCount+=nCtrl;if(nCtrl10)gotoMyLabel;coutThesumisnCounti)if(i=8)break;cout(b)?(a):(b);voidmain()intnRadius=3.0;intnArea=nRadius*nRadius*PI;,#definemax(a,b)(ab)?a:b;intkk=2+max(1,2);,4.4.2宏定义指令,宏定义是高级语言编译器提供的常用预处理指令,其目的是使用某一标识符标识某个文本字符串,分为无参数宏及有参数宏两类,格式如下:#define或#define()使用方法示例如下:,#definePI3.1415926#definemax(a,b)(a)(b)?(a):(b);voidmain()intnRadius=3.0;intnArea=nRadius*nRadius*PI;,4.4.2宏定义指令,字符串化运算符#将右操作数变为字符串,#definePrintS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农贸市场标准化改造项目可行性研究报告
- 数据中心锂电池储能系统建设方案
- 关于周末闭馆时间通知函(5篇)范文
- 服饰行业市场经理业绩考核表
- 内容创作与策划效果考核表
- 公务员申论写作能力提升模拟试卷及答案
- 2026年住院医师规范化培训临床科研方法学备考习题及答案
- 注册咨询工程师考试化工工程咨询模拟试题及答案
- 专升本英语一语法专项练习题库及答案
- 烹饪与面点师专业考试冲刺练习及答案
- GB/T 12729.1-2026香辛料和调味品名称
- 2026广东深圳市交易集团限公司选聘28人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年焊工技术比赛模拟试题(含答案)
- 第5课 生命最宝贵 课件(内嵌视频)2026-2027学年道德与法治四年级上册统编版
- 铁矿选矿技术概述培训课件
- 2026中国医生AI行为与态度调研报告抢先版
- 2026报关员面试题目及答案
- 小学一年级同音字大全(带拼音+组词+字义区分课本高频)
- 2026中国人工智能辅助心电图诊断准确率验证研究
- 重庆航天科工集团笔试题
- 中国慢性肾脏病诊疗指南2025版
评论
0/150
提交评论