﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-开发是一门技术，编程是一种艺术-最新评论</title><link>http://www.cppblog.com/sunlovesusu/CommentsRSS.aspx</link><description>游戏老手，编程新手</description><language>zh-cn</language><pubDate>Thu, 15 Jul 2010 20:56:42 GMT</pubDate><lastBuildDate>Thu, 15 Jul 2010 20:56:42 GMT</lastBuildDate><generator>cnblogs</generator><item><title>re: i++, ++i 和i=i+1究竟哪个快？</title><link>http://www.cppblog.com/sunlovesusu/archive/2010/07/16/120384.html#120504</link><dc:creator>54sun</dc:creator><author>54sun</author><pubDate>Thu, 15 Jul 2010 20:54:00 GMT</pubDate><guid>http://www.cppblog.com/sunlovesusu/archive/2010/07/16/120384.html#120504</guid><description><![CDATA[@楼主不厚道<br> 其实做这个测试的目的仅仅是想知道在只需要把i递增1的情况下，这三个算式是否有区别。比如在for语句for (int i = 0; i &lt; 10; i=i+1)，如果是c，那么i=i+1是个常用的，到了c++一般都用i++。就个人来说，我觉得i++这个形式就反映了其语言本身的名字，所以看起来很合适。但有人认为++i更效率，于是写成for (int i = 0; i &lt; 10;++i)。并不是说这样有问题，只是我个人认为i++比++i要看起来自然些。更何况，其实这里++i并没有比i++快。<br><br>此文并不是要讨论运算符重载。<br><br>@OwnWaterloo<br>所以： &quot;如果只需要++i， 就不要写成i++； 如果只需要i++， 就不要写成i=i+1&quot;。<br>养成这种习惯， 无论i是什么类型都无所谓。<br><br>我想说的是，如果只是一个int递增，我会用i++。形式上比较美，而且效率和++i一样。特别是在for语句里面。（当然，你对3者区别的解释是十分简单明了正确的）<img src ="http://www.cppblog.com/sunlovesusu/aggbug/120504.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sunlovesusu/" target="_blank">54sun</a> 2010-07-16 04:54 <a href="http://www.cppblog.com/sunlovesusu/archive/2010/07/16/120384.html#120504#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: i++, ++i 和i=i+1究竟哪个快？</title><link>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120465</link><dc:creator>。。。</dc:creator><author>。。。</author><pubDate>Thu, 15 Jul 2010 12:00:00 GMT</pubDate><guid>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120465</guid><description><![CDATA[这么多回复，已经很明了了，<br><br>j = ++ i<br><br>这句就可以看出来，++i和i++效率不同，<br>++i直接把i改变，然后值给j就可以<br>i++要先保存i的值，然后把i改变，再把i给j<br><br>还有什么好争的<br><br>如果有人非说编译器优化，i++可以先把值给j，然后改变i，跟++i一样，<br>那就再考虑 j= j + i++ 吧<br><br><br>回复别人问题麻烦先仔细看上面其他人回复的内容，不要想当然<img src ="http://www.cppblog.com/sunlovesusu/aggbug/120465.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sunlovesusu/" target="_blank">。。。</a> 2010-07-15 20:00 <a href="http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120465#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: i++, ++i 和i=i+1究竟哪个快？</title><link>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120461</link><dc:creator>www</dc:creator><author>www</author><pubDate>Thu, 15 Jul 2010 09:23:00 GMT</pubDate><guid>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120461</guid><description><![CDATA[i是int下，都一样。<br><br><br>这个之所以分这么细，完全是C++里重载 operator ++ 的缘故，自定义类型的这两个操作，差别挺大的，i++ 需要比++i额外产生一个新对象，并返回该新对象。<img src ="http://www.cppblog.com/sunlovesusu/aggbug/120461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sunlovesusu/" target="_blank">www</a> 2010-07-15 17:23 <a href="http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120461#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: i++, ++i 和i=i+1究竟哪个快？</title><link>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120456</link><dc:creator>freebug</dc:creator><author>freebug</author><pubDate>Thu, 15 Jul 2010 08:09:00 GMT</pubDate><guid>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120456</guid><description><![CDATA[你这个测试，估计大部分的测试时间被for占去了吧<img src ="http://www.cppblog.com/sunlovesusu/aggbug/120456.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sunlovesusu/" target="_blank">freebug</a> 2010-07-15 16:09 <a href="http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120456#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: i++, ++i 和i=i+1究竟哪个快？</title><link>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120431</link><dc:creator>日光博客</dc:creator><author>日光博客</author><pubDate>Thu, 15 Jul 2010 03:21:00 GMT</pubDate><guid>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120431</guid><description><![CDATA[各有各的用处~~<img src ="http://www.cppblog.com/sunlovesusu/aggbug/120431.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sunlovesusu/" target="_blank">日光博客</a> 2010-07-15 11:21 <a href="http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120431#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: i++, ++i 和i=i+1究竟哪个快？</title><link>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120427</link><dc:creator>楼主不厚道</dc:creator><author>楼主不厚道</author><pubDate>Thu, 15 Jul 2010 02:58:00 GMT</pubDate><guid>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120427</guid><description><![CDATA[@楼主不厚道<br>对了,我假设 i 是基本类型,<br>暂时先不考虑 i 是非基本类型的情况,因为那种情况 i++;   ++i;   i + 1; 肯定根据自己的定义了,所以显然的问题暂不考虑<img src ="http://www.cppblog.com/sunlovesusu/aggbug/120427.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sunlovesusu/" target="_blank">楼主不厚道</a> 2010-07-15 10:58 <a href="http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120427#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: i++, ++i 和i=i+1究竟哪个快？</title><link>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120425</link><dc:creator>陈梓瀚(vczh)</dc:creator><author>陈梓瀚(vczh)</author><pubDate>Thu, 15 Jul 2010 02:53:00 GMT</pubDate><guid>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120425</guid><description><![CDATA[@haven<br>对象的两个++根本就是不同的函数，没有可比性。<img src ="http://www.cppblog.com/sunlovesusu/aggbug/120425.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sunlovesusu/" target="_blank">陈梓瀚(vczh)</a> 2010-07-15 10:53 <a href="http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120425#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: i++, ++i 和i=i+1究竟哪个快？</title><link>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120422</link><dc:creator>老安</dc:creator><author>老安</author><pubDate>Thu, 15 Jul 2010 02:20:00 GMT</pubDate><guid>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120422</guid><description><![CDATA[# re: i++, ++i 和i=i+1究竟哪个快？  回复  更多评论   <br># re: i++, ++i 和i=i+1究竟哪个快？ 回复 更多评论 删除评论 <br>因为C++可以重载操作符。<br>所以， 除非&quot;知道i的类型&quot;， 表达式 i++, ++i, i=i+1 的行为&quot;未知&quot;。<br><br>从语意上说，所需要的操作： ++i &lt; i++ (多一个复制), i=i+1(多一个赋值)。<br>所以： &quot;如果只需要++i， 就不要写成i++； 如果只需要i++， 就不要写成i=i+1&quot;。<br>养成这种习惯， 无论i是什么类型都无所谓。<br><br>另一方面， 在已知i是int的情况下，如果某编译器生成的代码有显著区别， 那可以把它丢了……<br>2010-07-14 14:16 | OwnWaterloo<br>2010-07-14 14:34 | 54sun<br><br><br>这是正解。<br><img src ="http://www.cppblog.com/sunlovesusu/aggbug/120422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sunlovesusu/" target="_blank">老安</a> 2010-07-15 10:20 <a href="http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120422#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: i++, ++i 和i=i+1究竟哪个快？</title><link>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120421</link><dc:creator>。。。</dc:creator><author>。。。</author><pubDate>Thu, 15 Jul 2010 02:14:00 GMT</pubDate><guid>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120421</guid><description><![CDATA[# re: i++, ++i 和i=i+1究竟哪个快？  回复  更多评论   <br>其实,编译器一般都会把i++,++i,i=i+1,优化成汇编,inc eax,,<br>至于你的测试,我估计是在程序运行过程中,系统的调度所产生的偏差(因为某段代码用完了他的时间片,系统切换其它工作线程),或其它未知原因:),<br>因为他们所对应的指令是一样的.<br><br><br>那么，你认为<br>j = ++ i<br>怎么优化成汇编,inc eax,呢？<img src ="http://www.cppblog.com/sunlovesusu/aggbug/120421.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sunlovesusu/" target="_blank">。。。</a> 2010-07-15 10:14 <a href="http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120421#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: i++, ++i 和i=i+1究竟哪个快？</title><link>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120420</link><dc:creator>。。。</dc:creator><author>。。。</author><pubDate>Thu, 15 Jul 2010 02:11:00 GMT</pubDate><guid>http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120420</guid><description><![CDATA[。。。无语，有缺陷的测试得到的必然是有缺陷的结果，包括你代码得到的反汇编<img src ="http://www.cppblog.com/sunlovesusu/aggbug/120420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sunlovesusu/" target="_blank">。。。</a> 2010-07-15 10:11 <a href="http://www.cppblog.com/sunlovesusu/archive/2010/07/15/120384.html#120420#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>