




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章简单的算术运算和表达式,哈尔滨工业大学计算机科学与技术学院苏小红sxh,本章学习内容,算术运算符增1和减1运算符宏常量与const常量表达式与赋值中的自动类型转换强制类型转换运算符常用的标准数学函数,运算符(Operator),详见附录C常见的运算符算术运算符赋值运算符强制类型转换关系运算符逻辑运算符增和减位运算符,3.1C运算符和表达式(OperatorandExpression),何谓运算符和操作数?,3.1.1算术运算符和表达式,ArithmeticOperators,除法(Division),Example:,整数除法(IntegerDivision),11/5=2,Example:,实数除法(FloatingDivision),11.0/5=2.2,求余(Modulus),Itreturnstheremainderthatoccursafterperformingthedivisionof2operandsRule:Operandsmustbeintegers,注意!,Example:,11%5=1,11,5,2,10,1,求余(Modulus),Example:,-11%5=-1,-11,5,-2,-10,-1,求余(Modulus),Example:,11%-5=1,11,-5,-2,10,1,求余(Modulus),Example:,11.0%5=?,求余(Modulus),注意!,当算术表达式包含两个或两个以上的算术运算符时首先要确定运算顺序所有的运算符都有一个优先级(OrderofPrecedence),算术表达式(ArithmeticExpression),优先级(OrderofPrecedence)High:*/%Low:+-不同优先级时的运算顺序:从高到低相同优先级时的运算顺序:算术运算符为左结合(从左到右),算术表达式(ArithmeticExpression),Example:,?,4,8.5,2.5+6,4,4.5,2.5+62*2=,算术表达式(ArithmeticExpression),4.5,巧妙使用圆括号改变运算顺序从内往外运算,Example:,(9(3+2)*3=?,算术表达式(ArithmeticExpression),Example:(9(3+2)*3=?,5,4,12,(9(3+2)*3=12,算术表达式(ArithmeticExpression),赋值语句(AssignmentStatement),三种赋值形式:Simple简单赋值Multiple多重赋值Shorthand简写的复合赋值,算术混合运算,【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和,关键是如何分离个位、十位和百位数字?,153%10=3,153/100=1,1531*100=53,53/10=5,【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和,#includemain()intx=153,b0,b1,b2,sum;b2=x/100;b1=(x-b2*100)/10;b0=x%10;sum=b2+b1+b0;printf(b2=%d,b1=%d,b0=%d,sum=%dn,b2,b1,b0,sum);,变量的赋值,简单赋值(SimpleAssignment):变量=表达式;,多重赋值(MultipleAssignment):变量1=变量2=表达式;,Syntax:变量x=变量x运算符op表达式;变量x运算符op=表达式;,3.1.2复合的赋值运算符(CombinedAssignmentOperators),这种形式看起来更直观,且执行效率一般也更高一些,Example:num=num+5;,15+5,20,20,Example:num+=5;,similartonum=num+5,3.1.2复合的赋值运算符(CombinedAssignmentOperators),已知inta=3;执行a+=a-=a*a后,变量a的值?a+=a-=a*aa+=a-=9a+=-6a=-12,3,-6,-12,执行a+=a-=a*=a后,变量a的值?a+=a-=a*=aa+=a-=9a+=0a=0,3,9,0,0,简写的复合赋值(ShorthandAssignment),3.1.2复合的赋值运算符(CombinedAssignmentOperators),3.1.3增1和减1运算符(IncrementandDecrement),n+,n-,+n,-n+让参与运算的变量加1,-让参与运算的变量减1作为后缀(postfix)运算符时,先取n的值,然后加/减1,3.1.3增1和减1运算符(IncrementandDecrement),n+,n-,+n,-n+让参与运算的变量加1,-让参与运算的变量减1作为后缀(postfix)运算符时,先取n的值,然后加/减1作为前缀(prefix)运算符时,先加/减1,然后取n的值,Example:j=+i-2,similartoi=i+1;j=i2;,4,6,前缀(Prefix)增1和减1运算符,Example:j=i+-2,similartoj=i2;i=i+1;,后缀(Postfix)增1和减1运算符,3,6,inta=3;printf(%d,-a+);,similartoprintf(%d,-a);a=a+1;,后缀(Postfix)增1和减1运算符,4,良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次增1或者减1运算过多的增1和减1运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果,3.1.3增1和减1运算符(IncrementandDecrement),【例3.2】计算圆的周长和面积,circumference=33.300854area=88.247263,#includemain()doubler=5.3;printf(circumference=%fn,2*3.14159*r);printf(area=%fn,3.14159*r*r);,#includemain()doubler;printf(Inputr:);scanf(%lf,【例3.3】计算圆的周长和面积,Inputr:5.3circumference=33.300854area=88.247263,在程序中直接使用的常数称为幻数(MagicNumber),使用幻数存在的问题?,直接使用常数会有什么影响?程序的可读性变差容易发生书写错误当常数需要改变时,要修改所有引用它的代码,工作量大,还可能有遗漏解决方案:避免使用幻数把幻数定义为常量(宏常量、const常量),3.2宏常量与宏替换,#define标识符字符串宏常量(MacroConstant)也称符号常量一般采用全大写字母表示宏定义不是语句,而是一种编译预处理命令,#includemain()doubler;printf(Inputr:);scanf(%lf,【例3.4】计算圆的周长和面积,宏替换,#include#definePI3.14159;#defineR5.3;main()printf(area=%fn,PI*R*R);printf(circumference=%fn,2*PI*R);,相当于执行#includemain()printf(area=%fn,3.14159;*5.3;*5.3;);printf(circumference=%fn,2*3.14159;*5.3;);,语法错误,计算圆的周长和面积,#includemain()constdoublePI=3.14159;doubler;printf(Inputr:);scanf(%lf,const常量与宏常量相比的优点是什么?const常量有数据类型某些集成化调试工具可以对const常量进行调试,3.3const常量,【例3.5】,表达式与赋值中的自动类型转换,相同类型数据的运算结果,还是该类型不同类型数据的运算结果,是两种类型中取值范围大的那种longdoubledoublefloatlongintshortchar,double,float,long,unsigned,int,char,short,表达式与赋值中的自动类型转换,取值范围小的类型赋值给取值范围大的类型是安全的反之是不安全的若大类型的值在小类型能容纳的范围之内,则平安无事。但是浮点数转为整数,会丢失小数部分,而非四舍五入反之转换后的结果必然是错误的,具体结果与机器和实现方式有关避免如此使用,好的编译器会发出警告,注意!,表达式与赋值中的自动类型转换,【例3.6】下面程序演示了赋值中的类型转换,Example:intx=10;floaty;y=(float)x;,(float)10,10.000000,3.4自动类型转换与强制类型转换运算符,强转(Casting)可以消除从大到小的警告通过下面方式把表达式的值转为任意类型(类型)表达式,不改变x,Example:inttotal,number;floataverage;average=total/number;,15/2,7,两个整数运算的结果还是整数,不是浮点数,3.4自动类型转换与强制类型转换运算符,Example:inttotal,number;floataverage;average=(float)total/number;,15.000000/2,7.500000,3.4自动类型转换与强制类型转换运算符,【例3.7】演示强制类型转换运算符的使用,m/2=2(float)(m/2)=2.000000(float)m/2=2.500000m=5,3.5常用的标准数学函数,【例3.8】计算三角形面积,are
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水电行业2025年技术创新动态与大型水电项目投资效益研究报告001
- 基于风险管理的2025年文化旅游小镇开发社会稳定评估报告
- 2025年元宇宙社交平台虚拟身份认同与用户体验研究报告
- 二手交易电商平台信用体系建设与信用评级行业规范研究报告001
- 2025年农业新型经营主体农村金融服务创新与培育路径研究报告
- 2025届山东省济南市莱芜区莲河学校英语八年级第二学期期中考试试题含答案
- 2025年农业科技成果转化中的农业技术培训案例报告
- 数字孪生在城市基础设施建设中的应用模式及2025年发展趋势报告
- 2025年医药流通供应链优化与成本控制创新策略研究报告
- 工业互联网平台数字水印技术实时监测与数据安全预警:2025年数据保护解决方案报告
- 2024年全国“红旗杯”班组长大赛(复赛)备考试题库(简答、案例分析题)
- 全国住房城乡建设行业职业技能大赛各赛项技术文件 C1-建筑信息模型技术员LS技术文件
- 北京大学2024年强基计划笔试数学试题(解析)
- 2023-2024学年四川省南充市仪陇县五年级数学第二学期期末经典试题含解析
- 畜禽屠宰企业兽医卫生检验人员考试试题
- 医疗废物污水培训课件
- 设备维保的预防性维修与预防性管理
- 2022-2023学年湖北省黄冈市武穴市七年级(下)期末历史试卷(含解析)
- 2024年江苏瑞海投资控股集团有限公司招聘笔试参考题库含答案解析
- 山东省济南市南山区2022-2023学年六年级下学期期末考试语文试题
- 《眼球的结构与功能》课件
评论
0/150
提交评论