C语言内涵教程周二强著第3章节表达式.pptVIP

C语言内涵教程周二强著第3章节表达式.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言内涵教程 周二强 zeq126@126.com 中国铁道出版社 ISBN9787113163815 第3章 表达式 3.1 概述 3.2 赋值操作符 3.3 算术操作符 3.4 逗号操作符 3.5 典型例题 研究:自增操作符的误用 3.1 概述 表达式的定义 由操作符和操作数两部分组成。 操作数可以是 变量、字面量和函数调用 操作符的分类:根据操作数的个数; 根据功能。 表达式的分类 操作符根据功能分类之后,C语言表达式也相应地分类为赋值表达式、算术表达式等。 3+2是?a=5是?a=3+2呢? 如何分类? 表达式中的操作符有执行顺序,表达式的类型由最后执行的操作符决定。 表达式的值 C语言表达式最重要的特征是每个表达式都有一个确定的值。有确定的值必有确定的类型。 所谓表达式的值是指按照规则,依次对表达式中的操作符进行运算,最终所得到的结果。 表达式3-2/5怎样求值? 表达式3-2+1-2怎样求值? 表达式的求值规则 优先级高的操作符先执行;优先级相同的相邻操作符根据结合性确定执行顺序。 可以用加括号的方式确定求值顺序,如表达式3-2/5的求值顺序为(3-(2/5))。 表达式a=b=c=23的求值顺序为? 当赋值操作符为左结合时?为右结合时? (((a=b)=c)=23)和(a=(b=(c=23))) 表达式3*a+5*b的计算次序 两个*号谁先算?根据结合性? 结合性只负责决定优先级相同的“相邻”操作符。 在C语言中并没有明确规定! 哪个子表达式先计算影响最终的结果吗?通常没有影响。 例3-1 查表确定下面表达式的求值顺序。 i = j = k = 23 顺序为(i = (j = (k = 23))) -i++ 顺序为(-(i++)) n 5 i % 3 = = 0 顺序为((n 5) ((i % 3) = = 0)) 代数式中表示数的字母在表达式中可以用同名的变量代替。 该代数式中有求绝对值运算、求平方根运算和求幂运算? 库函数。求绝对值可用fabs函数,求平方根可用sqrt函数,求幂可用pow函数,求正弦值可用sin函数。但要注意? #include math.h 分数形式怎么办? C语言表达式(fabs(a) + sqrt(b * b - pow(x, y))) / 5 表达式语句 在后面加一个分号(;),C语言表达式就变成了C语句,此类语句也称为表达式语句。 计算机执行表达式语句的过程,就是根据规则对表达式“求值”的过程。 表达式语句执行完毕会得到一个值。 j=23;赋值语句,怎样执行?表达式的值是? printf(%d\n, j=23);? 3.2 赋值操作符 赋值操作符“=”是双目操作符、右结合,由它构成的赋值表达式的一般形式为: 变量 = 子表达式 赋值表达式求值时通常先计算出右边子表达式的值,再把值转换成变量的类型后存入变量所标识的存储单元。 a = 23、3 = i、i++ = 5和a + b = 23合法吗? 例3-3 分析下面程序的执行情况 例3-4 赋值表达式i = j = k = 23(变量均为整型)合法吗? 怎样判断一个表达式是否合法? 方法一:按照规则对表达式求值,如果能得到一个值,则表达式就是合法的;如果在求值的过程中出现了问题,则表达式非法。 方法二:把表达式变成表达式语句,如果语句能通过编译,则相关表达式合法。 切记“源程序要先由程序员执行”,因此,最好还是先利用方法一得出结论,不能确定结论是否正确时再利用方法二进行验证。 例3-4 赋值表达式i = j = k = 23(变量均为整型)合法吗? 执行顺序为(i=(j=(k=23))) 子表达式k=23是一个合法的赋值表达式,但是它的值是多少呢?因为每个C语言表达式最终都表现为一个值。 在VC6.0中子表达式k=23的值就是“变量k”。原表达式将变为: i=(j = k)。 这条语句的作用是把三个变量赋值为整数23。 例3-5 比较表达式(a = 3 * 2)= 5 * 7和表达式a = 3 * 2 = 5 * 7。 先计算子表达式a = 3 * 2,值为a,故原表达式变为a = 5 * 7。该表达式求值时,变量a先被赋值为6,后又被赋值为35。 a = (3 * 2 = 5 * 7),即a =(6 = 35)。子表达式6 = 35中赋值操作符的左操作数非变量,该子表达式不合法,因此,原表达式a = 3 * 2 = 5 * 7也非法。 3.2.2 类型不匹配时的赋值操作 指赋值表达式中左边子表达式值的类型与右边变量的类型不一致。 类型不匹配时的赋值操作有几种情况? C语言中字符型可以看作是码长一个字节的整型,因此,C语言的基本数据类型可简单地认为只有整型和浮点型两大类。 整型之间相互赋值 有几种情

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档