零点起及飞学C++之运算的最小单位.pptx

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
零点起及飞学C之运算的最小单位

第5章 运算的最小单位——表达式 任何合法的变量、常量、运算符,以及函数调用的有机组合就是表达式。它表示了一个概念或模型,是编程语言的基本要素。表达式是程序的核心和灵魂,表达式的重要行为是计算和类型转换。学习本章,读者可以了解C++语句的构成基础,为后面的进一步学习铺好道路。 5.1 定义和书写 表达式是由变量、常量、函数调用等,由运算符按一定规则连接起来的有意义的式子,类似数学上的公式。它是程序的基本要素。它既可以是单个的变量或数据,也可以是表达式的复合。 5.1.1 表达式的分类 从类型上分,表达式可分为算术表达式、关系表达式、条件表达式、赋值表达式、逗号表达式,以及逻辑表达式等。 算数表达式是用算数运算符和常量、变量组成的表达式,用来求数值解; 关系表达式的运算符为关系运算符,用来判断表达式元素间的关系; 条件表达式是由条件语句构成的表达式; 赋值表达式的运算符是赋值运算符,执行右值向左值赋值的功能; 逗号表达式是使用逗号连接多个表达式构成的复合表达式。 逻辑表达式的运算符为逻辑运算符,用来表示一种逻辑关系; 例如,5+3,xy,x0y0,x=6,xy ? x:y等,这些都是表达式。其中,第1个是算数表达式,第2个是关系表达式,第3个是逻辑表达式,第4个是赋值表达式,最后一个是条件表达式。而这一组表达式作为一个表达式来用就行成了逗号表达式。 从复杂程度上分,表达式可分为原子表达式和复合表达式。 原子表达式指单个的数字、字符、字符串、函数等表示单一概念的量; 复合表达式是原子表达式和运算符(诸如括号、+、–、、!等)按一定规则构成的式子。上述的表达式都属于复合表达式。 从上述讨论可知,表达式是可以嵌套的,是一个递归的概念,任何表达式都可以再作为元素去构成更复杂的表达式。 例如,表达式x+y和x-y可以复合成表达式(x+y)*(x-y)。 5.1.2 表达式的意义 一个表达式也可看做是一个数学函数。它输入的是各元素的定值,而输出则为表达式对这些值计算的结果,即表达式的值。 就表达式本身来讲,它什么都不做,只是计算并返回结果。如果程序不对这个返回的结果做任何进一步的操作,它将不起任何作用。由于它返回的是值,所以也可参与运算。至于能够参与什么样的运算,这依赖于它的返回值是什么样的类型。 如果说两个表达式是相等的,那么意指这表示两个表达式对于任意相同的输入,具有相同的输出。这与数学中函数相等的概念是一致的。 【示例5-1】 演示表达式的运算。 分析:该示例定义两个表达式“((num+num)2)”和“(8*num)”,从命令行读入整数,用这两个表达式计算并输出。这两个表达式具有不同的形式,表面上完全不一样,但它们对于任何num的赋值都会输出相同的结果,所以说它们是相等的。实际上可以看出,将第1个表达式简化就得到了第2个表达式。 表达式的计算中还包含优先级和结合性两个概念,已在第4章“运算符”中讲过,这里不再赘述。 5.1.3 表达式的书写 表达式的书写中需要注意以下几点: 1.表达式必须是“合适的” 这是指表达式中每个运算符都必须是完全的,书写正确的,放在正确的地方,有正确的语义,而且有正确的操作数。 【示例5-2】 下述表达式都是错误的。 第1个表达式中放错了地方,应该是xy。第2个中小括号不配对,缺少了右括号。第3个中操作数不全,原意应该是求8和某个数的模。第4个使用错误。如果作为按位与,那么缺少了另一个操作数;而如果作为取地址运算,那么对常量取地址也是不正确的。 2.使用一些符号增加可读性 为了增加可读性,表达式中可以加入任意的Tab键、空格符和括号。编译时,Tab键和空格符会被忽略掉,不会给程序增加负担。括号不仅有助于可读性,更重要的是括号可以明确标出运算符的优先级和结合性,不致引起歧义。 3.结尾不能添加分号 表达式末尾不能带分号“;”。它是语句(参见第6章)的结束符,而表达式不是语句。这使得它可以出现在任何需要表达式的地方,扩大了使用范围。如果给表达式加上“;”,它将不再是表达式,而是表达式语句。 技巧:利用表达式具有返回值的特性,常可在一个表达式中出现多个左值。这么做虽然增加了程序的复杂度和理解难度,但可以提高代码运行效率。例如,area=high*(round=_PI_*(r1))在计算侧面积的同时,也保留了底面周长。 5.2 类 型 转 换 类型转换指在不同种类型或不同种精度之间的相互转换。表达式能否正确计算,很大程度上取决于操作数的类型是否适当。如果操作数的类型不适当,就要看能否转换为适当的。如果不能转换为需要的类型,那么这个表达式将是无法计算的,或者结果将不是预期的。因此,合理地进行类型转换是表达式成功的要素之一。 5.2.1 默默的变化——隐式转换 隐式类型转换就是自动类型转换。当系统期

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档