C语言中的表达式与表达式的值

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:hl217348
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:结合最小表达式的概念详细论述了表达式的值的求解方法,并通过几个典型实例剖析了C语言表达式的值的具体应用及分析方法。
  关键词:C语言;运算符;表达式
  中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)23-965-01
  Expression and Its Value of C Language
  LIU Yu-li
  (Electron Department,Engineering College,Linyi Normal University,Linyi 276000,China)
  Abstract: This paper discussed detailedly the way of evaluation of expression with the concept of minimum expression,and analysed the concrete application and analytic method of evaluation of expression.
  Key words: C language; operator; expression
  
  1 引言
  
  C语言是基于结构化程序设计思想的程序设计语言,结构化的程序由函数组成,而函数是由语句组成的。C语言中语句的标志是分号,对于一个语句而言,去掉分号后,它只是一个式子,这个式子就是表达式。
  
  2 表达式
  
  表达式是构成语句的基本单位,C语言中的表达式是由运算符串联起来的式子,所串联的对象可以是常量、变量或函数调用。表达式的划分是由运算符来决定的,由算术运算符串联起来的式子称为算术表达式;由关系运算符串联起来的式子称为关系表达式等。很多情况下需要讨论有且只有一个运算符的表达式,因此把这种有且只有一个运算符所构成的表达式称为最小表达式,如a b或!a等就是最小表达式。任何复杂的的表达式都是由最小表达式构成的,如:a b>c d,这是一个关系表达式,而关系运算符的两边又是有算术表达式a b和c d组成,这两个算术表达式都是最小表达式。最小表达式是求值的基本单位,因此在最小表达式两边加上括号而不影响整个表达式的值,如a b>c d和(a b)>(c d)的结果是一样的。
  对于一个复杂的表达式而言,划分最小表达式的依据是各种运算符的优先级和结合性,首先以表达式中优先级最高的运算符为核心划分出一级最小表达式,然后加上小括号运算符,小括号里面的最小表达式使用它的值进行替换,因此形成一个新的表达式,然后这个新的表达式的基础上寻找二级最小表达式,直到将原表达式分成只有一个运算符的表达式为止,根据最后的这个运算符就能确定原表达式的类型,因此就能确定原表达式的值及其类型。
  
  3 表达式的值
  
  表达式的值是表达式运算后的结果,任何一个表达式都会有一个值及其类型,这个值是一个常量,也就是说任何一个最小表达式的值都是一个某种类型的常量,算术表达式的的值是整形或浮点型的常量,关系表达式或逻辑表达式的值是逻辑量0或1。如1 2是一个算术表达式,它的结果3是一个整形常量,而1 2 5这个算术表达式可以通过寻找最小表达式的的方式将其改成(1 2) 5,在运算(1 2) 5这个表达式时,小括号部分是一个最小表达式,需要使用该最小表达式的值(常量)和5进行运算,即3 5,对于这个新的表达式而言,它只有一个运算符,是一个最小表达式,我们可以根据这个最小表达式确定原表达式是一个算术表达式,它最终的结果就是一个整数常量(8)。
  在分析一个表达式的时候需要将一个复杂的表达式分解成若干个最小表达式,结合表达式的值这一概念,分析表达式最终的值时可以利用表达式的值一步一步完成原表达式的求值过程。例如求10 ’a’ i*f的结果,我们从最小表达式的角度分析整个表达式的运算过程。
  先寻找一级表达式,*优先级最高,则可将原表达式改成10 ’a’ (3*2.0),根据类型转换相关的知识可知,运算3*2.0时,由于2.0是double型常量,需要将3转换成double型的常量3.0(不再显示小数点后其它多余的0,下同),运算的结果是double型的常量6.0,因此原表达式可以转变成10 ’a’ 6.0,而表达式’a’的值在做算术运算时用它的ASCII码97,因此可以写成10 97 6.0,这个表达式的运算符都是算术运算符,而算术运算符的结合性是自左向右的,因此它等于(10 97) 6.0,也就是107 6.0,这时原表达式就变成一个最小表达式,由于6.0是double型的常量,同样需要将107转换成double型的107.0,然后再和6.0运算,所得到的结果是113.0,类型是一个double型的常量。
  这种分析过程和C语言编译器求解过程可能不同,但最终结果都是一样的,而这种分析方法可以使初学者更容易的接受复杂表达式的求解过程。
  当单个的常量、变量出现在赋值符号的右边是可以看作是表达式的特例,如int a,i=3;a=i;其中3是一个常量表达式,而在a=i这个表达式中i可以看成一个最小表达式的特例,赋值过程是将表达式i的值(整形常量3)赋给变量a。
  “=”本身也是一个运算符,它所串联的式子是一个赋值表达式,该表达式的值采用赋值运算符右边的表达式的值,如a=3是一个赋值表达式,该表达式的值是采用右边常量表达式3的值,作为该表达式的值,因此不难理解b=a=3的赋值过程。由于赋值运算符是右结合的因此可以将原表达式通过最小表达式的方式求解,即b=(a=3),小括号中是一个最小赋值表达式,该表达式的值是3,即原表达式变成b=(3)。
  函数调用也是一种最小表达式,在运算时用函数的返回值作为该表达式的值,如如i=Max(a,b),该赋值运算符在运算时是将Max(a,b)的返回值(某种类型的常量)赋给i。
  
  4 特例
  
  自增(自减)表达式是一个特例。 a本身是一个最小表达式,该表达式的值采用变量a中的值,而不是用最小表达式的值,如( a)*( a),假设a=1,如果用最小表达式的概念来分析,前一个小括号中是一个最小自增表达式,该表达式的值是2,后一个小括号也是一个最小自增表达式,该表达式的值是3,理论上分析最终的结果应该是2*3=6,而在TC2.0和VC6.0下显示的结果是9,也就是说原表达式所使用的是变量a中的值,经过两次自增后a中的值是3,因此结果是3*3=9。
  
  5 结束语
  
  C语言中的表达式与表达式的值这两个概念非常重要,对于初学者而言,如何求解复杂表达式的值是他们的难点,从教学过程中发现一旦他们真正理解了最小表达式的概念后,这个问题就迎刃而解了。
  
  参考文献:
  [1] 谭浩强.C程序设计[M].3版.北京:清华大学出版社,2005.
  [2] 何钦铭,颜晖.C语言程序设计[M].杭州:浙江科技出版社,2004.
  [3] 黄维通,马力妮.C语言程序设计[M].北京:清华大学出版社,2003.
其他文献
西南地区不仅有丰富的军事文化资源、红色文化资源和传统文化资源,更有让全军创作人羡慕的少数民族文化资源富矿。这里淳朴的民风、独特的地域文化和军区部队边防文化交融生辉,构成了一幅民族团结、鱼水情深的斑斓画卷。重视民族舞蹈创作,一直是军区文艺战线的光荣传统和鲜明特色,也是促进西南社会和谐与民族团结的艺术纽带。军区几代文艺工作者以青春和生命融入了这片土地,回望历史,我常常问自己为什么不能放下民族舞蹈的创作
《巨人的花园》是英国唯美主义作家奥斯卡·王尔德创作的童话作品,这篇文章文笔优美、故事温馨,得到了广泛的好评。文章被选人了人教版语文教材四年级上册。  一、体会语言之美  从前,一个小村子里有座漂亮的花园。那里,春天鲜花盛开,夏天绿树成荫,秋天鲜果飘香,冬天白雪一片。  这是课文开篇描写小村子里美丽的花园的一段文字。在教学中,教师可以向学生提出问题:“假如你看见一座美丽的花园,会如何用自己的语言来描
摘要:该文首先简要分析了Qtopia的实现技术和应用现状,然后详细论述了如何在基于s3c2440架构的开发板上移植Qtopia开发平台的过程,并结合项目需求介绍了Qtopia平台部分功能的完善。此外还介绍了MPlayer的移植过程,以及开发环境的搭建和若干开发实例。  关键词:Qtopia,嵌入式Linux,utu2440,MPlayer  中图分类号:TP316文献标识码:A文章编号:1009-
摘要:互联网的迅速发展,使如何采集和利用Web信息越来越受关注。该文提出了基于Web的信息采集系统的设计方案,并利用.Net技术与数据库技术,实现了对特定网站信息的采集与处理。  关键词:信息检索;正则表达式;ADO.NET  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)16-21263-02  Design and Implementation of Inform
形式迁移写话教学模式是施茂枝教授“基于小学牛心理特点的写作教学序列与模式”中系列教学模式之一。其教学目标具体,评价标准明确,教学步骤清晰,教学策略可操作性强,是读写结合的典型样式。《为什么?》所提供的言语范式是教师“着意下水”的一首儿歌,是教师根据教学需要而精心写成的独特文本,在它和统编教材二年级下册第六单元写话例句主题的联合触发下,运用本模式引导学生写话,既可引导学生产生探索自然科学的兴趣和热爱
摘要:对现有的Apriori算法进行改进,用分治策略引入哈希技术的方法完成了压缩侯选集,减少频繁扫描数据库的次数,克服了原有关联规则的数据挖掘算法生成频繁集比较大,且需要反复扫描数据库的问题。  关键词:Web数据挖掘;网站个性化信息推荐;关联规则  中图分类号:TP301文献标识码:A文章编号:1009-3044(2008)24-1265-02  A Personalized Informati
摘要:杨慎是明代词人中首屈一指的人物,他的词集《升庵长短句》对我们今天了解明词,了解杨慎本人有着重要的意义。以典入词,是杨慎创作的一大特色,本文粗略地对杨慎在词作中使用的部分典故进行了经、史、子、集四大部类的梳理,以期对杨慎词作的用典特色加以分析。  关键词:杨慎 《升庵长短句》 以典入词  杨慎一生著作宏富,现存著述约两百余种,内容涵盖经、史、子、集。《明史》卷一九二载杨慎“明世记诵之博、著作之
只要白天还有一碗饭吃,夜晚还有地方睡觉,就想画画,就想用画笔去抒发自己的思想情感,去表现大自然的美妙,这就是画家,甚至可能成为大画家。画画并非出于自愿而是为了养家糊口的人,不是画家而是画工。一味地模仿跟风,一辈子都画不出自己的东西来,也不能算作画家,最多算个画匠。  传统是艺术家的根与魂,不向优秀传统学习,艺术将是无根之木、无源之水。创新是艺术家的天职,是生命的艺术,是艺术家吸取古今中外艺术精华,
摘要:proteus已成为电子技术人员常用的工具软件,本文介绍了自己创建proteus原理图库和PCB封装库的方法和步骤,方便了设计人员用proteus设计原理图和印刷线路板图  关键词:proteus;原理图库;PCB库  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)06-10000-00    A way probing to creat my own sch
【摘要】统编教材中的“语文园地”已经走出读读背背、抄抄写写的“积累识记”传统编写套路,走上“语用实践”的崭新道路。因此,在“语文园地”教学中,教师要从单元整体出发,针对丰富的语言现象,搭建多维的语用支架,从语文知识教学走向语用教学,将“基础练习课”上成“语用实践课”,让学生不仅能够学习“语文知识”,更能做到“语文知识运用”。  【关键词】语文园地,基础练习,语用实践  无论是“大纲版”还是“课标版