如果for语句的增量表达式式2是自增语句怎么处理?

c语言大神进 如图,for语句中不是表达式3不是时逗号运算符吗?i++,j--构成逗号表达式_百度知道
c语言大神进 如图,for语句中不是表达式3不是时逗号运算符吗?i++,j--构成逗号表达式
hiphotos?为什么还能够输出正确结果呢;如图;&nbsp://e,但是j没有控制循环条件.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="/zhidao/wh%3D600%2C800/sign=cc4a20aa062b41a/79f0f736afcbc146e8c4b.baidu,应该死循环啊?i++://e?<a href="了;&nbsp,值为j--起作用,虽然当i++大于n/2&nbsp,j--构成逗号表达式,for语句中不是表达式3不是时逗号运算符吗./zhidao/wh%3D450%2C600/sign=8de9e20d9bbeafe4efbf736afcbc146e8c4b://e.jpg" esrc="/zhidao/pic/item/79f0f736afcbc146e8c4b.baiduc语言大神进&nbsp.hiphotos.baidu
提问者采纳
j--确实构成逗号表达式 其最终的值也确实是最后一个表达式的值;1,&n/2所以肯定会正常终止的;n/2,1其中的k 得到的就是整个逗号表达式的值;i&lt,j; int&=&nbsp,k的值分别为2; k&nbsp,j--)i++,0,但是i++也会执行的 所以i一直在自增,j--;1:i;=&k,而你的循环终止条件是i&假设有这个例子 那么最后的结果是;j&i++。下面说一下逗号表达式的值的问题 int&=&i&i++请注意 逗号表达式是按顺序执行 整个表达式的值是最后一个表达式的值你的for循环中 for(i=0
那例如for(i=0,j=6;i&2,j&1;i++,j--)当i等于2时并不结束循环,当j等于1时才结束,那刚才图片中的for循环只有当j满足一定条件时才退出循环啊,i大于n&#47;2应该不起作用的,是吗?
刚刚我在上面已经说了 整个逗号表达式的值是最后一个表达式的值,而for循环结束的判断条件其实就是两个分号之间的表达式的值对于for(i=0;i&n&#47;2;i++,j--)来说 循环终止的条件就是i&n&#47;2对于for(i=0,j=6;i&2,j&1;i++,j--)来说 循环终止的条件就是 i&2,j&1这个逗号表达式,而这个逗号表达式的值 其实就是j&1的值 所以只有在j&1为true的情况下 循环才会终止。
哦哦,谢谢啊
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
按默认排序
其他3条回答
想要死循环加一个while语句吧
我怎么没看出是死循环呢!
循环条件是i&n&#47;2,只要满足这个情况循环就停了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁5.2 for语句_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
喜欢此文档的还喜欢
5.2 for语句
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:822.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢扫一扫下载手机客户端
扫描我,关注团购信息,享更多优惠
||网络安全
| | | | | | | | | | | | | | | |
||电子电工
汽车交通| | | | | | | | | |
||投资理财
| | | | | | | | | | | | | | | | |
| | | | | | |
| | | | | | | | | | | | | | | | | | |
| | | | | | |||
||外语考试
| | | | | | | | |
| 视频教程|
C程序设计语言(第2版.新版)+习题解答
定价:¥45.00
校园优惠价:¥32.85 (73折)
促销活动:
商品已成功飞到您的手机啦!快登录手机站看看吧!
下载客户端
> 微信关注“互动出版网”,便捷查询订单,更多惊喜天天有
ISBN:9787上架时间:出版日期:2004 年1月开本:16开页码:391版次:2-1
所属分类:
  《C程序设计语言(第2版?新版)》
本书是由C语言的设计者Brian W. Kernighan和Dennis M. Ritchie编写的一部介绍标准C语言及其程序设计方法的权威性经典著作。一本必读的程序设计语言方面的参考书。
《C程序设计语言(第2版?新版)》是由C语言的设计者Brian W. Kernighan和Dennis M. Ritchie编写的一部介绍标准C语言及其程序设计方法的权威性经典著作。全面、系统地讲述了C语言的各个特性及程序设计的基本方法,包括基本概念、类型和表达式、控制流、函数与程序结构、指针与数组、结构、输入与输出、UNIX系统接口、标准库等内容。
《C程序设计语言(第2版?新版)》的讲述深入浅出,配合典型例证,通俗易懂,实用性强,适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。
在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用如此广泛。
《C程序设计语言(第2版?新版)》原著 即为C语言的设计者之一Dennis M.Ritchie和著名的计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。我们现在见到的大量论述C语言程序设计的教材和专著均以 此书为蓝本。原著第1版中介绍的C语言成为后来广泛使用的C语言版本――标准C的基础。人们熟知的“hell, World”程序就是由本书首次引入的,现在,这一程序已经成为所有程序设 计语言入门的第一课。
原著第2版根据1987年制定的ANSIC标准做了适当的修订.引入了最新的语言形式,并增加了新的示例,通过简洁的描述、典型的示例,作者全面、系统、准确地讲述了C语言的各个特性以及程序设计的基本方法。对于计算机从业人员来说,本书是一本必读的程序设计语 言方面的参考书。
《C程序设计语言(第2版?新版)习题解答》对Brain W. Kernighan和Dennis M. Ritchie所著的《The C Programming Language》(第2版)的所有练习题都进行了解答。K&R的原著是C语言方面的经典教材,而这本与之配套的习题解答将帮助您更加深入地理解 C语言并掌握良好的C语言编程技能。本书有关练习题都是用K&R原著中当时已经介绍过的语言结构来解答的,对每道练习题的答案要点都给予了清晰的解释,实用性强。适合于大专院校师生作为计算机专业或非计算机专业C语言教学的辅助教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。
《C程序设计语言(第2版?新版)习题解答》是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言(第2版?新版)》所有练习题的解答,是极佳的编程实战辅导书。K&R的著作是C语言方面的经典教材,而这本与之配套的习题解答将帮助您更加深入地理解C语言并掌握良好的C语言编程技能。单凭阅读和学习语法结构并不能真正掌握一门程序设计语言.必须进行编程实践――亲自编写一些程序并研究别人写的程序。您可以通过K&R教材学习C语言,独立地解答书中的练习题.再钻研本书给出的习题解答。
《C程序设计语言(第2版?新版)习题解答》特点
有关练习题都用K&R教材介绍的语言结构进行解答.与K&R教材中的教学内容保持同步。读者在学习到更多的C语言知识之后.可以给出更好的解决方案
不重复K&R教材中的内容,但对每道练习题的答案要点都给出了清晰的解释
利用C语言良好的特性使程序模块化,充分利用库函数并以格式化的风格编写程序,有助于读者清楚地了解程序的逻辑流程
徐宝文,东南大学计算机科学与工程系教授,博士生导师,江苏省政协常委,江苏省计算机学会副理事长,江苏省软件行业协会副会长,中国计算机学会理事,中国软件行业协会理事。主要从事程序设计语言、软件工程等方面的教学与研究工作,负责承担过十多项国家级、部省级科研项目;在国内外发表论文130多篇,出版著译作10多部;担任《实用软件详解丛书》与《新世纪计算机系列教材》的主编,第五次国际青年计算机学术会议(ICYCS79)大会主席;发起并主办过两次“全国程序设计语言发展与教学学术会议”;先后获航空航天部优秀青年教师、江苏省优秀教育工作者、江苏省优秀青年骨干教师、江苏省跨世纪学术带头人等称号。
李志,毕业于国防科技大学计算机学院,现于上海交通大学计算机科学与工程系攻读博士学位,主要从事网格计算、中间件技术等方面的研究。已经出版的译作有《IP技术基础:编址和路由》、《ISDN与Cisco路由器配置》等。
审校人简介
尤晋元,上海交通大学计算机科学与工程系教授、博士生导师、国务院学位委员会学科评议组成员。主要从事操作系统、分布对象计算、中间件技术等方面的研究。并长期担任操作系统及分布计算等课程的教学工作。主编和翻译了多本与操作系统相关的教材和参考书,包括《UNIX操作系统教程》、《UNIX环境高级编程》、《操作系统设计与实现》等。
《C程序设计语言(第2版?新版)》
出版者的话
专家指导委员会
校译者简介
第1章 导言 1
1.1 入门 1
1.2 变量与算术表达式 3
1.3 for语句 8
1.4 符号常量 9
1.5 字符输入/输出 9
1.5.1 文件复制 10
1.5.2 字符计数 11
1.5.3 行计数 13
1.5.4 单词计数 14
1.6 数组 15
  《The C Programming Language》不仅在C与C++语言界,而且在整个程序设计语言教学与研究界都是耳熟能详的经典著作。最主要的两点原因是:
  其一,这部著作自第1版问世后就一直深受广大读者欢迎,畅销不衰,是计算机学术界与教育界著书立说的重要参考文献。可以说,几乎所有的程序设计语言著作以及C与C++著作的作者都把这部著作作为参考文献。早在20年前我国就翻译出版过这部著作的第1版。
  其二,这部著作的原作者之一Dennis M. Ritchie是C语言的设计者,这样就保证了在著作中能完整、准确地体现与描述C语言的设计思想。本书讲述的程序设计方法以及各种语言成分的细节与用法具有权威性,这很有利于读者把握C语言的精髓。
  《The C Programming Language》的第1版问世于1978年,第2版自1988年面世后一直被广泛使用,至今仍未有新的版本出版,由此可见该著作内容的稳定性。
  本书英文原著叙述深入浅出、条理清楚,加之辅以丰富的例证,非常通俗易懂。无论对于计算机专业人员还是非计算机专业人员,也无论用于C语言教学还是用作参考书,她都是当之无愧的正确选择。这也许就是这部著作自第1版问世以来长期畅销不衰的原因之一。
  机械工业出版社曾经于2000年出版过中文版。众多高校师生在使用过程中提出了大量的宝贵意见,出版社和我们悉心听取并总结了这些意见,更加深入地领会了原书的要旨,重新认真精读了原书中的每句话,在此基础上,我们推出了新版中文版。此新版中文版在语言、术语标准化、技术细节等方面都对原中文版本进行了更进一步的雕琢。希望本书能够更好地帮助您学习C语言!
  本书由东南大学计算机系徐宝文教授和上海交通大学计算机系李志博士翻译,上海交通大学计算机系的尤晋元教授审校了全书内容。在本书出版之际,我们感谢所有曾经给予我们帮助的人们!
  本书的原著是经典的C语言教材,我们在翻译本书的过程中,无时无刻不感觉如履薄冰,惟恐因为才疏学浅,无法正确再现原著的风范,因此,我们一直在努力做好每件事情。但是,无论如何尽力,错误和疏漏在所难免,敬请广大读者批评指正。我们的邮件地址是:lizhi_。随时欢迎您的每一点意见。如果您在阅读中遇到问题,或者遇到C语言的技术问题,可随时与我们联系,我们将尽力提供帮助。最后,感谢关心本书成长的每一位读者!
  2003年6月
  Since its original design and implementation by Dennis Ritchie in 1973, the C programming language has spread far beyond its origins at Bell Labs. It has become the common language for programmers throughout the world, and has given birth to two other major languages, C++ and Java, that build on its syntax and basic structure. C and its derivatives are the base upon which much of the worlds software rests.
  The spread of C required action to describe the language itself completely, and to accommodate changes in the way it was being used. In 1988, the American National Standards Institute (ANSI) created a precise standard for C that preserved its expressiveness, efficiency, small size, and ultimate control over the machine, while at the same time providing assurance that programs conforming to the standard would be portable without change from one computer and operating system to another. This standard was also accepted as an international standard under the auspices of the International Standards Organization (ISO), and thus brought the benefits of standardization to a worldwide user community.
  The standards committee was aware of the multi-national use of the C language, and thus provided, both in the language itself and in the library, support for wide characters? which are needed to represent text in Chinese as well as other languages that do not use the Roman character set.
  In spite of these evolutionary changes, C remains as it was from its inception, a compact and efficient tool for programmers of all backgrounds.
  The C language, and also the Unix technology from which it grew, have been present in China for many years, as we know from visits to universities and the Chinese Academy of Sciences. Students?learning has always been made more difficult by the lack of an authoritative translation of the material describing this work into a form convenient for study in China. We are delighted that Professor Xu has made this Chinese translation of The C Programming Language?available so that C will be more readily accessible to our colleagues in the Peoples Republic of China.
  Brian W. Kernighan
  Dennis M. Ritchie
  C程序设计语言最早是由Dennis Ritchie于1973年设计并实现的。从那时开始,C语言已经从其位于贝尔实验室的发源地传播到世界各地。它已经成为全球程序员的公共语言,并由此诞生了两个新的主流语言C++与Java―它们都建立在C语言的语法和基本结构的基础上。现在世界上的许多软件都是在C语言及其衍生的各种语言的基础上开发出来的。
  C语言的传播需要我们对语言加以完整的描述,并适应它在使用过程中所进行的一些变化。1988年,美国国家标准协会(ANSI)为C语言指定了一个精确的标准,该标准保持了C的表达能力、效率、小规模以及对机器的最终控制,同时还保证符合标准的程序可以从一种计算机与操作系统移植到另一种计算机与操作系统而无需改变。这个标准同时也被国际标准化组织(ISO)接受为国际标准,使世界各地的用户团体都受益于这一标准。
  标准委员会考虑到C语言在多民族使用的情况,在语言本身以及库中都提供了对“宽字符”的支持,这是以中文以及其他不使用罗马字符集的语言来表示文本所需要的。
  除了这些渐进的变化外,C仍保持着它原来的样子―具有各种背景的程序员的一种紧凑而有效的工具。
  在我们访问中国的大学和中国科学院时,我们获悉,C语言以及基于它发展起来的UNIX技术引入中国已经有很多年了。由于缺少把描述这一工作的素材翻译成在中国易于学习的形式的权威译本,学生们在学习时遇到了许多困难。我们欣喜地看到徐宝文教授完成《C程序设计语言》的中译本,我们希望它的出版有助于我们在中华人民共和国的同行更容易地理解C语言。
  Brian W. Kernighan
  Dennis M. Ritchie
  自从1978年《The C Programming Language》一书出版以来,计算机领域经历了一场革命。大型计算机的功能越来越强大,而个人计算机的性能也可以与十多年前的大型机相媲美。在此期间,C语言也在悄悄地演进,其发展早已超出了它仅仅作为UNIX操作系统的编程语言的初衷。
  C语言普及程度的逐渐增加以及该语言本身的发展,加之很多组织开发出了与其设计有所不同的编译器,所有这一切都要求对C语言有一个比本书第1版更精确、更适应其发展的定义。1983年,美国国家标准协会(ANSI)成立了一个委员会,其目标是制定“一个无歧义性的且与具体机器无关的C语言定义”,而同时又要保持C语言原有的“精神”。结果产生了C语言的ANSI标准。
  ANSI标准规范了一些在本书第1版中提及但没有具体描述的结构,特别是结构赋值和枚举。该标准还提供了一种新的函数声明形式,允许在使用过程中对函数的定义进行交叉检查。标准中还详细说明了一个具有标准输入/输出、内存管理和字符串操作等扩展函数集的标准库。它精确地说明了在C语言原始定义中并不明晰的某些特性的行为,同时还明确了C语言中与具体机器相关的一些特性。
  本书第2版介绍的是ANSI标准定义的C语言。尽管我们已经注意到了该语言中已经变化了的地方,但我们还是决定在这里只列出它们的新形式。最重要的原因是,新旧形式之间并没有太大的差别;最明显的变化是函数的声明和定义。目前的编译器已经能够支持该标准的大部分特性。
  我们将尽力保持本书第1版的简洁性。C语言并不是一种大型语言,也不需要用一本很厚的书来描述。我们在讲解一些关键特性(比如指针)时做了改进,它是C语言程序设计的核心。我们重新对以前的例子进行了精炼,并在某些章节中增加了一些新例子。例如,我们通过实例程序对复杂的声明进行处理,以将复杂的声明转换为描述性的说明或反之。像前一版中的例子一样,本版中所有例子都以可被机器读取的文本形式直接通过了测试。
  附录A只是一个参考手册,而非标准,我们希望通过较少的篇幅概述标准中的要点。该附录的目的是帮助程序员更好地理解语言本身,而不是为编译器的实现者提供一个精确的定义―这正是语言标准所应当扮演的角色。附录B对标准库提供的功能进行了总结,它同样是面向程序员而非编译器实现者的。附录C对ANSI标准相对于以前版本所做的变更进行了小结。
  我们在第1版中曾说过:“随着使用经验的增加,使用者会越来越感到得心应手”。经过十几年的实践,我们仍然这么认为。我们希望这本书能够帮助读者学好并用好C语言。
  非常感谢帮助我们完成本书的朋友们。Jon Bentley、Doug Gwyn、Doug McIlroy、Peter Nelson和Rob Pike几乎对本书手稿的每一页都提出了建议。我们非常感谢Al Aho、Dennis Allison、Joe Campbell、G. R. Emlin、Karen Fortgang、Allen Holub、Andrew Hume、Dave Kristol、John Linderman、Dave Prosser、Gene Spafford和Chris Van Wyk等人,他们仔细阅读了本书。我们也收到了来自Bill Cheswick、Mark Kernighan、Andy Koenig、Robin Lake、Tom London、Jim Reeds、Clovis Tondo和Peter Weinberger等人很好的建议。Dave Prosser为我们回答了很多关于ANSI标准的细节问题。我们大量地使用了Bjarne Stroustrup的C++翻译程序进行程序的局部测试。Dave Kristol为我们提供了一个ANSI C编译器以进行最终的测试。Rich Drechsler帮助我们进行了大量的排版工作。
  真诚地感谢每个人!
  Brian W. Kernighan
  Dennis M. Ritchie
  C语言是一种通用的程序设计语言,其特点包括简洁的表达式、流行的控制流和数据结构、丰富的运算符集等。C语言不是一种“很高级”的语言,也不“庞大”,并且不专用于某一个特定的应用领域。但是,C语言的限制少,通用性强,这使得它比一些公认为功能强大的语言使用更方便、效率更高。
  C语言最初是由Dennis Ritchie为UNIX操作系统设计的,并在DEC PDP-11计算机上实现。UNIX操作系统、C编译器和几乎所有的UNIX应用程序(包括编写本书时用到的所有软件)都是用C语言编写的。同时,还有一些适用于其他机器的编译器产品,比如IBM System/370、Honeywell 6000和Interdata 8/32等。但是,C语言不受限于任何特定的机器或系统,使用它可以很容易地编写出不经修改就可以运行在所有支持C语言的机器上的程序。
系列图书推荐 ¥119.00¥85.68
同类热销商品¥30.00¥21.90
订单处理配送
北京奥维博世图书发行有限公司 china-pub,All Rights Reserved热门搜索:
您的位置: -&
软件教程分类查找
非常抱歉!2345软件大全没能为您提供完善服务,万分感谢能得到您的指点!
您的建议:
精品软件课程
人气:376027
C++是一种静态数据类型检查的,支持多重编
人气:133591
Java,是由Sun Microsystems公司于1995年5
人气:39826
Visual Basic.NET是从 Visual Basic 语言演
人气:115786
C语言是一种面向过程的计算机程序设计语言
小游戏推荐
C语言自增自减运算符深入剖析
出处:2345软件大全
人气:8602
相关下载:
核心提示:C语言的自增++,自减--运算符对于初学者来说一直都是个难题
  C语言的自增++,自减--运算符对于初学者来说一直都是个难题,甚至很多老手也会产生困惑,最近我在网上看到一个问题:
  #include &stdio.h&
  void main() /*主函数*/
  int a,b,c,d;
  c=(a++)+(a++)+(a++);
  d=(++b)+(++b)+(++b);
  printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
  结果是什么?
  而后Eric搜了一下后发现,类似的问题很多,也就是说对自增自减运算符感到迷惑是一个普遍存在的问题,基于此,Eric决定对自增自减运算符做个小小的解析,希望能给C语言爱好者们提供参考,解决对此问题的困惑。
  自增自减运算符语法
  自增运算符 ++ 使操作数的值加1,其操作数必须为(可简单地理解为变量)。对于自增就是加1这一点,Eric想大家都不会有什么疑问。
  问题在于:++ 可以置于操作数前面,也可以放在后面,如:
  ++i表示,i自增1后再参与其它运算;而i++ 则是i参与运算后,i的值再自增1.
  自减运算符--与之类似,只不过是变加为减而已,故不重述。
  实例剖析
  下面我们通过一些实例来深入理解自增运算符的特性,自减运算符同理自悟
  例一:
  int i=3;
  int j=4;
  printf("%d, %d\n", i, j);
  对此,Eric想大家都不会有什么困惑,结果就是 4,5;下面我们来做一点小改动:
  int i=3;
  int j=4;
  int a = i++;
  int b = ++j;
  printf("%d, %d\n", a, b);
  结果又是多少呢?这里就开始体现出++前置与后置的区别了,结果是3,5.结合此例,我们回头再来理解一下"++前置:i自增1后再参与其它运算;++后置:i参与运算后,i的值再自增1".很明显,a = i++;由于是先执行赋值运算,再自增,所以结果是a=3,i=4;而b = ++j;
  则因先自增,然后再赋值,所以b,j均为5.
  其实基本道理就这么简单了,但在更复杂点的情况下又会如何呢,请看:
  例二:
  int i=3;
  int j=4;
  int a = i++ + i++;
  int b = ++j + ++j;
  printf("%d, %d\n", a, b);
  问题又来了,i++ + i++是先自增一次,相加,再自增,然后赋值呢,还是先相加赋值然后自增两次呢。另外,++j又将如何表现呢?
  结果是:6,12
  这下明白了,原来 i++的理解应该是执行完整个表达式的其他操作后,然后才自增,所以例子中的a=3+3=6;而后i再自增2次,i=5;相反,++j是先自增然后再参加其它运算,所以b=6+6=12.
  到此,是否就彻底明了了呢?然后回到引子中的问题
  例三:
  int i=3;
  int j=4;
  int a = i++ + i++ + i++;
  int b = ++j + ++j + ++j;
  printf("%d, %d\n", a, b);
  有人可能会说,这很简单,我全明白了:a=3+3+3=9,i=6,b=5+5+5=15,j=5.真的是这样吗?
  结果却是:9,19
  这下可好,又糊涂了。对于a = i++ + i++ + i++;我们已经没有疑问了,++后置就是执行完整个表达式的其他操作后,然后才自增,上例中也得到了验证,但 b = ++j + ++j + ++j;又该如何理解呢?
  原理表达式中除了预算法本身的优先级外,还有一个结合性问题。在++j + ++j + ++j;中,因为存在两个同级的+运算,根据+运算符的左结合性,在编译时,其实是先处理前面的(++j + ++j)这部分,然后再将此结果再和++j相加。具体过程参见汇编代码:
  int b = ++j + ++j + ++j;
  0040B7DD mov ecx,dword ptr [ebp-8]
   add ecx,1
   mov dword ptr [ebp-8],ecx // 第一个++j
   mov edx,dword ptr [ebp-8]
   add edx,1
  0040B7EC mov dword ptr [ebp-8],edx // 第二个++j
  0040B7EF mov eax,dword ptr [ebp-8]
   add eax,dword ptr [ebp-8] // ++j + ++j
   mov ecx,dword ptr [ebp-8]
   add ecx,1
  0040B7FB mov dword ptr [ebp-8],ecx // 第三个++j
  0040B7FE add eax,dword ptr [ebp-8] // ++j + ++j + ++j
   mov dword ptr [ebp-10h],eax // 赋值给b
  另外我们看看a = i++ + i++ + i++;的汇编代码:
  int a = i++ + i++ + i++;
   mov eax,dword ptr [ebp-4]
   add eax,dword ptr [ebp-4] // i+i
  0040B7BC add eax,dword ptr [ebp-4] // i+i+i
  0040B7BF mov dword ptr [ebp-0Ch],eax // 赋值给a
   mov ecx,dword ptr [ebp-4]
   add ecx,1
   mov dword ptr [ebp-4],ecx // 第一次i++
  0040B7CB mov edx,dword ptr [ebp-4]
  0040B7CE add edx,1
   mov dword ptr [ebp-4],edx // 第二次i++
   mov eax,dword ptr [ebp-4]
   add eax,1
  0040B7DA mov dword ptr [ebp-4],eax // 第三次i++
  果然不出所料。到此,++运算符前置后置的问题应该彻底解决了。
  为了验证一下上述结论,我们再看:
  例四:
  int i=1;
  int j=1;
  int a = i++ + i++ + i++ + i++ + i++ + i++ + i++; // 七个
  int b = ++j + ++j + ++j + ++j + ++j + ++j + ++j;
  printf("%d, %d\n", a, b);
  printf("%d, %d\n", i, j);
  规则就是规则,咱的计算机可不是黑客帝国的母体,总是要遵循它的
  a = 1+1+1+1+1+1+1 = 7, i=8
  b = 3+3+4+5+6+7+8 = 36, j=8
  一切OK,恭喜你还生活在21世纪的地球,不用担心matrix控制你的思维和生活
  注:以上结果及解释出自VC编译器,但对于++这个问题是和编译器的解析有关的,不同厂家可能理解不一致,因手头没有其他开发环境,暂无法做全面分析,本文只是为了说明++,--这运算符的一些特性,尤其是前置后置的区别这个问题。类似的问题如果有困惑,最好是写程序做试验解决,请勿生搬硬套。谢谢!在实际的编程实践中,类似的问题除了要试验搞清外,Eric认为应该尽量避免引入环境相关的编程技巧。
评论问答区
资源统计:无插件软件:93083个 无病毒软件:93374个 昨日已处理122个带插件、病毒的软件
本站总软件:93374个 软件总下载次数:22.558亿次
软件教程文章:83118篇 总浏览次数:2.605亿次

我要回帖

更多关于 数据库增删改查语句 的文章

 

随机推荐