c语言-算术运算和赋值运算课件

上传人:大米 文档编号:569382360 上传时间:2024-07-29 格式:PPT 页数:45 大小:1.47MB
返回 下载 相关 举报
c语言-算术运算和赋值运算课件_第1页
第1页 / 共45页
c语言-算术运算和赋值运算课件_第2页
第2页 / 共45页
c语言-算术运算和赋值运算课件_第3页
第3页 / 共45页
c语言-算术运算和赋值运算课件_第4页
第4页 / 共45页
c语言-算术运算和赋值运算课件_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《c语言-算术运算和赋值运算课件》由会员分享,可在线阅读,更多相关《c语言-算术运算和赋值运算课件(45页珍藏版)》请在金锄头文库上搜索。

1、A. 算术运算符B. 增1和减1运算符C. 符号常量与 const常量D. 类型转换E. 常用的标准数学函数Example:W + Z操作数(Operand)运算符(Operator)操作数(Operand)Addition (+)Subtraction (-)Multiplication (*)Division (/)Modulus (%)Arithmetic OperatorsArithmetic OperatorsExample:W / Z浮点数除法(Floating Division)n nWW or Z Z or both are floatsfloats整数除法(Integer D

2、ivision)n nWW and Z Z are integers integers!Example:an integeran integer the result is also an integer11 / 5 = 2Example:11.0 / 5 = 2.2a floatan integerthe result is a floatIt returns the remainder that occurs after performing the division of 2 operandsRule: 操作数必操作数必须是整数是整数Operands must be integers注意

3、!注意!Example:11 % 5 = 1an integeran integer1152101remainderremainderresultExample:-11 % 5 = -1an integeran integer-115-2-10-1remainderremainderresultExample:11 % -5 = 1an integeran integer11-5-210 1remainderremainderresultExample:11.0 % 5 = ?a floatan integerINVALID! 注意!注意!当算术表达式包含两个或两个以上的算术运算符时首先要确定

4、运算顺序所有的运算符都有优先级和结合方向 优先级(Order of Precedence) High:High:* / %* / %Low: Low: + -+ -不同不同优先先级时的运算的运算顺序:序:从高到低从高到低相同相同优先先级时的运算的运算顺序:序:算算术运算符运算符为左左结合(从左到右)合(从左到右)Example:48.52.5 + 6 44.52.5 + 6 2 * 2 = 4.5巧妙使用巧妙使用圆括号括号改改变运算运算顺序序从内往外运算从内往外运算Example:( 9 ( 3 + 2 ) ) * 3 = ?三种三种赋值形式形式: :SimpleSimple简单赋值Multi

5、pleMultiple多重多重赋值ShorthandShorthand简写的复合写的复合赋值关键是如何分离个位、十位、百位数字?153 % 10 = 3153 / 100 = 1153 - 1*100 = 53 53 / 10 = 5简单赋值(Simple AssignmentSimple Assignment): : 变量量 = = 表达式表达式 ; ;多重赋值(Multiple Assignment): 变量1 = 变量2 = 表达式 ; Syntax: 变量x = 变量x 运算符op 表达式 ; 变量x 运算符op = 表达式;这种形式看起来更直观,且执行效率一般也更高一些这种形式看起来

6、更直观,且执行效率一般也更高一些Example:num num = = num num + + 5; num 5; num +=+= 5; 5;已知已知 int a = 3;执行行 a += a -= a * a 后,后,变量量a的的值? a += a -= a * a a += a -= 9 a += -6 a = -12OperationExamples of expressionDescription+=num += 5;num = num + 5;-=num -= 5;num = num 5;*=num *= 5;num = num * 5;/=num /= 5;num = num /

7、 5;%=num %= 5;num = num % 5;复合的赋值运算符复合的赋值运算符(Combined Assignment Combined Assignment OperatorsOperators)n+n+,n n-,+n+n,-n-n+让参与运算的参与运算的变量加量加1 1,-让参与运算的参与运算的变量减量减1 1作作为后后缀(postfix)(postfix)运算符运算符时,先取,先取n n的的值,然后加,然后加/ /减减1 1作作为前前缀(prefix)(prefix)运算符运算符时,先加,先加/ /减减1 1,然后取,然后取n n的的值m = n+;m = n;n+;n+;

8、m = n;n+n+,n n-,+n+n,-n-n+让参与运算的参与运算的变量加量加1 1,-让参与运算的参与运算的变量减量减1 1作作为后后缀(postfix)(postfix)运算符运算符时,先取,先取n n的的值,然后加,然后加/ /减减1 1作作为前前缀(prefix)(prefix)运算符运算符时,先加,先加/ /减减1 1,然后取,然后取n n的的值m = +n;Example:j = +i - 2i5similar to similar to i = i + 1;j = i 2;j?46前缀(前缀( PrefixPrefix )增)增1 1和减和减1 1运算符运算符Example

9、:j = ij = i+ - 2 - 2i5similar to similar to j = i 2;j = i 2;i = i + 1;i = i + 1;j?36int a=3;int a=3;printf(%d, -a+);printf(%d, -a+);3similar to similar to printf(%d, -a);printf(%d, -a);printf(%d, -a);printf(%d, -a);a = a + 1;a = a + 1;a = a + 1;a = a + 1;4良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次增1或者减1运算 Becaus

10、eBecause过多的增1和减1运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果circumference = 33.300854area = 88.247263错误在哪里?Input r: 5.3 circumference = 33.300854 area = 88.247263在程序中直接使用的常数称为幻数(Magic Number) 假如直接使用常数,会有什么影响?假如直接使用常数,会有什么影响?程序的可程序的可读读性性变变差差容易容易发发生生书书写写错误错误当常数需要改当常数需要改变时变时,要修改所有引用它的代,要修改所有引用它的代码码,工作量大

11、,工作量大,还还可能有可能有遗遗漏漏解决方案:解决方案:避免使用幻数避免使用幻数把幻数定把幻数定义为义为常量(宏常量、常量(宏常量、constconst常量常量) #define#define 标识符标识符 字符串字符串宏常量(宏常量(Macro constant Macro constant )也称符号常量也称符号常量一般采用全大写字母表示一般采用全大写字母表示 宏定义不是语句,而是一种编译预处理命令宏定义不是语句,而是一种编译预处理命令宏替换宏替换constconstconstconst常量与宏常量相比的优点是什么?常量与宏常量相比的优点是什么?常量与宏常量相比的优点是什么?常量与宏常量相

12、比的优点是什么?constconstconstconst常量有常量有常量有常量有数据类型数据类型数据类型数据类型某些集成化调试工具可以对某些集成化调试工具可以对某些集成化调试工具可以对某些集成化调试工具可以对constconstconstconst常量进行调试常量进行调试常量进行调试常量进行调试相同相同类型数据的运算型数据的运算结果,果,还是是该类型型不同不同类型数据的运算型数据的运算结果,是两种果,是两种类型中取型中取值范范围大的那种大的那种longlong doubledouble doubledouble floatfloat longlong intint shortshort cha

13、rchardoublefloatlongunsignedintchar,short低高取取值范范围小小的的类型型赋值给取取值范范围大大的的类型是型是安全安全的的反之是不安全的反之是不安全的若若大大类型的型的值在在小小类型能容型能容纳的范的范围之内,之内,则平安无事平安无事 但是但是浮点数浮点数转为整数整数,会,会丢失小数部分,而非四舍五入失小数部分,而非四舍五入反之反之转换后的后的结果必然是果必然是错误的,具体的,具体结果与机器和果与机器和实现方方式有关式有关避免如此使用,好的避免如此使用,好的编译器会器会发出警告出警告注意!注意!下面程序演示了下面程序演示了赋值中的中的类型型转换Exampl

14、e: int x = 10;int x = 10;float y;float y;y = (float)x;y = (float)x; (float)10(float)10(float)10(float)10 10.00000010.00000010.00000010.000000x x10y y?强制类型转换运算符强制类型转换运算符强转强转(CastingCasting)可以消除从大到小的警告可以消除从大到小的警告通过下面方式把表达式的值转为任意类型通过下面方式把表达式的值转为任意类型( ( ( (类型类型类型类型) ) ) )表达式表达式表达式表达式不改变不改变x xm/2 = 2(flo

15、at)(m/2) = 2.000000(float)m/2 = 2.500000m = 5area = sqrt(s * (s - a) * (s - b) * (s - c)area = sqrt(s * (s - a) * (s - b) * (s - c)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 = 0.5 * (a + b + c)s = 1.0/2 * (a + b + c)s = 1.0/2 * (a + b + c)s = (a + b + c) / 2.0s = (a + b + c) / 2.0s = (float)(a + b + c) / 2s = (float)(a + b + c) / 2s = 1/2 * (a + b + c)s = 1/2 * (a + b + c)s = (float)(a + b + c) / 2)s = (float)(a + b + c) / 2) 注意!注意!Input a,b,c:3,4,5 area = 6.000000Questions and answers

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号