- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈C语言中自增自减运算
浅谈C语言中自增自减运算
【摘 要】C语言的内部运算符很丰富,其中最难理解的是在使用过程中最易得到模棱两可结果的自增自减运算符,特别是遇到多个自增自减运算符连续出现在表达式中的时候,结果更是让人无法估测。本文结合词法分析中的“贪心法”对这两个运算符的使用做了详细说明。
【关键词】贪心法 自增自减 词法分析
【中图分类号】G642 【文献标识码】A 【文章编号】1674-4810(2013)12-0080-02
C语言在计算机软件开发中的作用日益重要,它以独特的魅力征服了很多编程工作者,已成为世界上广泛流行的、最有发展前途的计算机高级语言。它适用于编写各种系统软件,也适用于编写各种应用软件。针对C语言的教学,笔者谈谈对自增自减运算符的几点看法。
一 自增和自减运算符的作用和特点
自增运算符(++)和自减运算符(――)都是单目运算符,它们的作用分别是使操作数加1和减1,换句话说:x=x+1;同++x,x=x-1;同――x,自增和自减运算符可用在操作数之前(前缀形式),也可放在操作数之后(后缀形式)。例如:“x=x+1;”可写成“++x;”或“x++;”,“x=x-1;”可写成“――x;”或“x――;”,但是表达式中这两种用法是有区别的,首先自增运算符和自减运算符在操作数之前(前缀形式)“++x,――x”:先使变量x的值加1或减1,再使用变量x的值。其次自增运算符或自减运算符在操作数之后(后缀形式)“x++,x――”:先使用变量x的值,再使变量x的值加1或减1。
在教学中我们应该注意以下几点:(1)使运算对象的值在原来的基础上加1或减1是自增运算符和自减运算符的特点。所以自增或自减运算其实和赋值表达式的功能是一样的。(2)运算符两边的运算对象的数据类型可以是整型的,也可以是实型的,但不能是常量或表达式。所以++5、(a+b)--等都是不合法的。(3)表达式若是由自增或自减运算符构成的,它的运算符就可以出现在运算对象的前面,也可以出现在运算对象后面,也就是前缀和后缀形式都可以,对于运算对象而言,结果是一样的,但从表达式的角度看,结果就是不一样的。(4)从优先级上来看,运算符“++”和“--”的结合??向是“从右到左”。假设有一表达式-a++,其中a的初始值为1,因为在运算符中,就相当于-(a++)运算,结果为-1,然后a自增为2。
二 自增和自减运算符的结合性
自增和自减运算符都是“从右到左”的结合方向,如果说a=3,那么计算:-a++,实际上就相当于计算-(a++)这个表达式,这时自增运算符“++”为后缀形式,(a++)的值为3,而-(a++)的值为-3,然后a的值自增为4。像这种简单的自增自减运算,我们按运算符的优先级和结合性处理还是比较容易解决的。若是遇到多个自增自减运算符连续出现在表达式中的时候,结果就可能模棱两可,有时更是让人无法估测。下面让我们来看一个复杂一些的例子:
例1:a+++++b的含义是什么?
我们为了验证它的含义,编写了一个小程序:
int main()
{
int a = 0;
int b = 0;
int c = 0;
c = a+++++b;
printf ( a+++++b The result is %d,c);
return 0;
}
左值就是可以在“=”左边,能被赋予值的东西;右值则是在“=”右边,可以赋值给别人的东西。所以左值必须是有内存空间的东西;而右值则既可以是变量,也可以是常量和某种表达式,只要能提供一个值即可。但这个程序是不能通过编译的,也就是说,尽管我们可以正确地理解这个表达式,但在编译过程中会产生错误。为什么a+++++b会编译错误呢?
第一,编译器在读入此语言时,遇到连续多个+,如+++++,自动识别位((++)++)+,即会++比+更优先识别。
第二,++运算需要左值的。a+++++b等价于((a++)++)+b。a++没问题,但问题就在于a++却不能作为左值,即不能被赋予值,因为a++是先返回a的值进行运算,然后再对a的引用加1。然而a的值(value-a)是不能作为左值的。所示((a++)++)错误。++a为什么可以作为左值呢?原因在于++a是对a的引用加1,然后返回a的引用。a的引用当然可以作为左值,被赋值了。
C语言中的某些符号,例如:/、*和=,只有一个字符长,称为单字符符号。而C语言的其他符号,例如:+=和==,以及标识符,包括了多个字符,称为多字符符号。当C编译器读入一个字符/后又跟了一个字符*,那么编译器就必须做出判断:是将其作为两个分别的符号对待,还是合起来作为一个符号对待。C语言对这个问题的解决方案可以归纳为一个很简
您可能关注的文档
- 浅议抵押权实现期间.doc
- 浅议我国起诉便宜主义制度完善.doc
- 浅议提高小学英语课教学效率策略.doc
- 浅议提高农牧区生物学科课堂教学有效性.doc
- 浅议提高数控车床加工质量措施.doc
- 浅议提高英语试卷讲评课有效性.doc
- 浅议提高高校辅导员人格魅力方法.doc
- 浅议搜查在职务犯罪侦查活动中应用.doc
- 浅议政治试卷讲评课中“双主”互动.doc
- 浅议教学与科研视角下运动生化实验员素质.doc
- 2025年安徽国际商务职业学院单招职业技能测试题库带答案(巩固).docx
- 2025年娄底职业技术学院单招职业倾向性测试题库附答案(a卷).docx
- 2025年广东金融学院单招职业适应性测试题库含答案(实用).docx
- 2025年安徽水利水电职业技术学院单招职业适应性测试题库(a卷).docx
- 2025年梅河口康美职业技术学院单招职业技能测试题库(b卷).docx
- 2025年安庆医药高等专科学校单招职业倾向性测试题库附答案(满分必刷).docx
- 2025年大连枫叶职业技术学院单招职业适应性测试题库附答案(综合题).docx
- 2025年大兴安岭职业学院单招职业技能测试题库含答案(b卷).docx
- 2025年安徽汽车职业技术学院单招职业适应性测试题库含答案(b卷).docx
- 2025年定西师范高等专科学校单招职业倾向性测试题库(精选题).docx
最近下载
- 2022山东能源集团中级人才库选拔上岸笔试历年难、易错点考题附带参考答案与详解.docx
- 统编版(2024)新教材七年级道德与法治下册第一单元《珍惜青春时光》每课时探究训练(含答案)汇编(含六套题).docx VIP
- 最新部编版四年级语文下册第八单元习作《故事新编》精品课件PPT.ppt VIP
- 食品安全自查、从业人员健康管理、进货查验记录、食品.docx VIP
- 大模型推理加速的优化实践-2024全球机器学习技术大会.pdf
- GB50858-2013 园林绿化工程工程量计算规范.docx
- 三亚太阳湾柏悦酒店宴会服务研究.docx
- 钢结构工程计量与计价培训资料.pptx VIP
- 中国普通流通纪念币完整目录(127枚)(1984年-2023年).pdf VIP
- 2025年科级领导干部任前廉政法规知识考试题(附答案).pdf VIP
文档评论(0)