- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
运算与表达式
第3章运算与表达式 3.1.1基本算术运算符 单目基本算术运算符 + 正值运算符 - 负值运算符 双目基本算术运算符 + 加法运算符 - 减法运算符 * 乘法运算符 / 除法运算符 % 模(求余)运算符 3.1.1基本算术运算符 注意: 如果两个操作对象是不同的类型。系统先把它们转成相同类型(这个转换并不会改变操作对象的值),然后再进行运算,运算结果值的类型也是转换后的类型。 除法运算的两个操作对象如果是整型,则结果是去掉小数部分后的整型,如19/10的表达式值是1,如果操作对象是整型且符号不同,则不同编译器出来方法可能不同,大部分是按照绝对值进行计算,结果去除小数部分后再加上负号。 求余运算如果操作对象有负数,则先按照两操作对象的绝对值进行计算,然后表达式的值,即余数的值按照操作对象1的符号确定,如-13%7、-13%-7两个表达式值都是-6,13%-7、13%7表达式值都是6。 3.1.2 优先级与结合性 复合表达式 由运算符、操作对象构成的有值的式子被称为表达式 。 操作对象本身也可以是一个表达式 。 含有两个或更多操作符的表达式称为复合表达式 。 例如:a+b/3*c-15%3 复合表达式按运算符的优先级别高低次序计算 基本算术运算符的优先级为 一级:单目运算:+、- 二级:双目运算:*、/、% 三级:双目运算:+、- 3.1.2 优先级与结合性 优先级相同按由运算符的结合性确定计算次序 右结合 一个运算对象左右两边的运算符如果优先级相同时就先算右边的或有两个同级别的运算符就先算右边的一个。 例如:单目运算符。 左结合 一个运算对象在左右两边的运算符如果优先级相同时就先算左边的或有两个同级别的运算符就先算左边的一个。 例如:双目运算符。 例如:10*2/5 使用括号 (2+10)*-2/5+((5+3)%4)*2 3.1.3 数据类型转换 数据类型转换 当表达式中出现不同类型数据的混合运算时,往往需要先进行数据类型的转换后才能运算,这种转换并不会改变原来变量的值和数据类型。 隐式类型转换 两个相同类型的数据(除short、char、float)直接可以运算,不需要类型转换。 两个不同类型的数据运算时,系统会自动地将低类型操作数转换为另一个高类型操作数的类型,然后再进行运算。 short、char=int-unsigned int-long-unsigned long-float=double-long double 强制类型转换 (类型名)(表达式) 例如:(double)x 例1,设int a=7;float x=2.1,y=4.4;求表达式x+a%3*(int)(x+y)%2/4的值。 #include stdio.h void main( ) { int a=7;float x=2.1,y=4.4; printf(%d\n,a%3); printf(%d\n,(int)(x+y)); printf(%d\n,a%3*(int)(x+y)); printf(%d\n,a%3*(int)(x+y)%2); printf(%d\n,a%3*(int)(x+y)%2/4); printf(%f\n,x+a%3*(int)(x+y)%2/4); } 例2,设int a=2,b=3;float x=4.1,y=2.4;求表达式(float)(a+b)/2+(int)x%(int )y的值。 3.7.1 赋值运算符和赋值表达式 一般形式为: 变量 = 表达式 说明 赋值运算符的优先级仅高于逗号运算符,赋值表达式的求解过程为:先计算赋值运算符右边的表达式的值,再将计算的值赋给运算符左边的变量。 赋值运算符具有计算和赋值的双重功能。 复合赋值运算 在赋值运算符之前加上其它运算符可以构成复合赋值运算符 一般形式如下: += a+ =b 等价于a=a+b -= a-=b 等价于a=a-b *= a*=b 等价于a=a*b /= a/=b 等价于a=a/b %= a%=b 等价于a=a%b …… 例如,已知x=3,y=2,求表达式x*=y+8的值。 又如,已知m=2,y=2,求表达式y+=y-=m*=y的值。 【例1】编写程序,实现从键盘上输入学生的三门课成绩,计算并输出其总成绩和平均成绩。 #include stdio.h void main() { float a,b,c,sum,ave; /* 输入部分 */ printf(Enter three float: ); scanf(%f,%f,%f,, a, b, c); /* 计算与输出部分 */ sum=a+b+c; ave=sum/3; printf(sum=%
文档评论(0)