版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3 3章章 简单的算术运算和表达式简单的算术运算和表达式 王娜娜 wang_内容提要C运算符和表达式宏常量和宏替换const常量 自动类型转换与强制类型转换运算符常用的标准数学函数运算符( OPERATOR )详见附录C常见的运算符算术运算符赋值运算符类型强转关系运算符逻辑运算符增和减位运算符3.1 C运算符和表达式(OPERATOR AND EXPRESSION)运算符( OPERATOR )详见附录C常见的运算符算术运算符赋值运算符类型强转关系运算符逻辑运算符增和减位运算符3.1 C运算符和表达式(OPERATOR AND EXPRESSION)当表达式包含两个或两个以上的运算符时 ,
2、首先要确定运算顺序;所有的运算符都有一个优先级( Order of Precedence ) 1. 优先级高的先运算;2. 运算按结合方向进行;1. 识别优先级:(), * /,+;2. (c+d);3. b * (c + d);4. b * (c + d) /d;5. a + b * (c + d) /d;a + b * (c + d) / d3.1 C运算符和表达式(OPERATOR AND EXPRESSION)Example:何谓运算符和操作数?算术运算符除法(DIVISION)Example:浮点数除法(Floating Division) or or both are floats
3、整数除法(Integer Division) and are integersExample:整数除法(INTEGER DIVISION)Example:实数除法(FLOATING DIVISION)求余(MODULUS)It returns the remainder that occurs after performing the division of 2 operandsRule: 操作数必须是整数Operands must be integersExample:1152101remainder求余(MODULUS)Example:-115-2-10-1remainder求余(MODU
4、LUS)Example:11-5-210 1remainder求余(MODULUS)Example:求余(MODULUS) 优先级(Order of Precedence) High:* / %Low: + -不同优先级时的运算顺序:从高到低相同优先级时的运算顺序:算术运算符为左结合(从左到右)算术表达式(ARITHMETIC EXPRESSION)Example: 算术表达式(ARITHMETIC EXPRESSION)巧妙使用圆括号改变运算顺序从内往外运算Example:算术表达式(ARITHMETIC EXPRESSION)Example:算术表达式(ARITHMETIC EXPRESS
5、ION)算术混合运算 【例3.1】计算并输出一个两位整数的个位、十位关键是如何分离个位、十位数字?【例3.1】计算并输出一个两位整数的个位、十位关键是如何分离个位、十位数字?【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和 关键是如何分离个位、十位、百位数字?【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和 关键是如何分离个位、十位、百位数字?【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和 关键是如何分离个位、十位、百位数字?【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和 赋值语句(ASSIGNMENT STATEMENT)三种赋值形式:Si
6、mple简单赋值Multiple多重赋值Shorthand简写的复合赋值变量的赋值简单赋值(Simple Assignment): 变量 = 表达式 ;Syntax: 变量x = 变量x 运算符op 表达式 ; 变量x 运算符op = 表达式;3.1.2复合的赋值运算符(COMBINED ASSIGNMENT OPERATORS)OperationExamples of expressionDescription+=num += 5;num = num + 5;-=num -= 5;num = num 5;*=num *= 5;num = num * 5;/=num /= 5;num = nu
7、m / 5;%=num %= 5;num = num % 5;Example:num = num + 5;num1520Example:num += 5;3.1.2复合的赋值运算符(COMBINED ASSIGNMENT OPERATORS)已知 int a = 3;执行 a += a -= a * a 后,变量a的值? a += a -= a * a a += a -= 9 a += -6 a = -12执行 a += a -= a *= a 后,变量a的值? a += a -= a *= a a += a -= 9 a += 0 a = 03.1.3增1和减1运算符(INCREMENT A
8、ND DECREMENT)n+,n-,+n,-n+让参与运算的变量加1,-让参与运算的变量减1作为后缀(postfix)运算符时,先取n的值,然后加/减13.1.3增1和减1运算符(INCREMENT AND DECREMENT)n+,n-,+n,-n+让参与运算的变量加1,-让参与运算的变量减1作为后缀(postfix)运算符时,先取n的值,然后加/减1作为前缀(prefix)运算符时,先加/减1,然后取n的值Example:j = +i - 2i5similar to j?46Example:j = i+ - 2i5similar to 后缀(POSTFIX)增1和减1运算符j?36int
9、 a=3;printf(%d, -a+);a3similar to 后缀(POSTFIX)增1和减1运算符4良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次增1或者减1运算过多的增1和减1运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果3.1.3增1和减1运算符(INCREMENT AND DECREMENT)【例3.2】计算圆的周长和面积 circumference = 33.300854area = 88.2472633.2宏常量与宏替换【例3.3】计算圆的周长和面积 Input r: 5.3circumference = 33.300854
10、 area = 88.247263在程序中直接使用的常数称为幻数(Magic Number) 使用幻数存在的问题?假如直接使用常数,会有什么影响?程序的可读性变差容易发生书写错误当常数需要改变时,要修改所有引用它的代码,工作量大,还可能有遗漏解决方案:避免使用幻数把幻数定义为常量(宏常量、const常量)3.2宏常量与宏替换 #define 标识符 字符串宏常量(Macro constant )也称符号常量一般采用全大写字母表示 宏定义不是语句,而是一种编译预处理命令【例3.4】计算圆的周长和面积 #include #define PI 3.14159;#define R 5.3;main()
11、printf(area = %fn, PI * R * R);printf(circumference = %fn, 2 * PI * R);相当于执行#include main()printf(area = %fn, 3.14159;*5.3;*5.3;);printf(circumference = %fn, 2*3.14159;*5.3;);计算圆的周长和面积 3.3 CONST常量表达式与赋值中的自动类型转换相同类型数据的运算结果,还是该类型不同类型数据的运算结果,是两种类型中取值范围大的那种long double double float long int short chardou
12、blefloatlongunsignedintchar,short低高表达式与赋值中的自动类型转换取值范围小的类型赋给取值范围大的类型是安全的反之是不安全的若大类型的值在小类型能容纳的范围之内,则平安无事 但是浮点数转为整数,会丢失小数部分,而非四舍五入反之转换后的结果必然是错误的,具体结果与机器和实现方式有关避免如此使用,好的编译器会发出警告表达式与赋值中的自动类型转换【例 3.6】下面程序演示了赋值中的类型转换Example: int x = 10;float y;y = (float)x;x10y?10.000000Example: int total, number;float ave
13、rage;average = total / number;total15number2average?7.000000两个整数运算的结果还是整数,不是浮点数Example: int total, number;float average;average = (float)total / number;total15number2average?7.500000【例3.7】演示类型强转运算符m/2 = 2(float)(m/2) = 2.000000(float)m/2 = 2.500000m = 5常用的标准数学函数 【例3.8】计算三角形面积 area = sqrt(s * (s - a) * (s - b) * (s - c)area = sqrt(s(s-a)(s-b)(s-c)s = 0.5 * (a + b + c)s = 1.0/2 * (a + b + c)s = (a + b + c) / 2.0s = (float)(a + b + c) / 2s = 1/2 * (a + b + c)s = (float)(a + b + c) / 2) 【例3.8】计算三角形面积 Input a,b,c:3,4,5area = 6.000000C运算符和表达式(运算规则、复合的赋值运算、增1和减1运算符)宏常量和宏替换(#defin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业文化塑造与品牌形象建设
- 2024年度光伏灯具安装与能源管理合同范本3篇
- 2024年会活动策划与执行合同5篇
- 2024年家具回收再销售协议3篇
- 2024年度二手房买卖合同-天津案例解析3篇
- 2024年度燃气工程备品备件供应合同3篇
- 吉林农业大学《电子商务与电子政务安全》2023-2024学年第一学期期末试卷
- 2024年度个人教育贷款合同(含助学贷款)3篇
- 吉林农业科技学院《图案与装饰2》2023-2024学年第一学期期末试卷
- 2024年广告宣传委托合同3篇
- 部编版六年级语文上册期末复习计划教案
- 校园智能安全防范信息平台需求说明
- 初中班主任德育论文3000字(10篇)
- 《现代设施园艺》课程标准
- 工作作风谈心谈话记录内容集合
- 非预应力锚杆检验批质量验收记录
- 小学数学教育现状与发展趋势分析
- 安全工作先进班集体申报材料(汇总七篇)
- 2023学年完整公开课版《生命的意义》
- 肌骨超声简介
- 锅炉工岗位安全风险告知卡
评论
0/150
提交评论