首页 新闻 会员 周边

i++和++i

0
[已解决问题] 解决于 2014-01-23 10:33
#include<iostream>
using namespace std;
int main()
{  int a=0;
   for(int i=0;i<=10;i++)    //或改成++i
       a++;
   cout<<a;
}

写注释的那一行无论是i++还是++i运行结果都一样,这是为什么呢?++操作分别在什么时候进行?

Neverland1995的主页 Neverland1995 | 初学一级 | 园豆:200
提问于:2014-01-21 13:54
< >
分享
最佳答案
0

结果当然一样啦。

++i的结果是:i+=1,并返回i

而i++的结果是:j=i,i+=1,最后返回j

这样对于循环来说,并没有区别。因为i++和++i都是单独执行的,只有返回值的区别的而已。没有用到返回值,都是一样的。

奖励园豆:5
勇敢的劳油条 | 初学一级 |园豆:21 | 2014-01-21 14:24

没有用到返回值是什么意思,j是什么?另外++操作在什么时候进行?谢谢~

Neverland1995 | 园豆:200 (初学一级) | 2014-01-22 11:41

@Neverland1995: ++其实你应该当成是一个函数。

你是刚学编程吗?建议看看书上的基础吧~j只是一个临时量,用于保存i原来的值,i++之后用作返回值。

勇敢的劳油条 | 园豆:21 (初学一级) | 2014-01-22 13:55
其他回答(4)
0

一直以来,++ --语法浪费了太多人的时间。说句实在话,++ -- 在C语言中其实是一个很细节的语法,除了表达简练外,真的没有什么其它的好处了。
由于中国的C语言教程长期以来被谭浩强主宰,而谭又错误的把++ --作为一个C语言重点来教,并增加了一些难点,把本来很简单的语法,搞得复杂无比!

简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;

如果实在搞不明白++ --怎么回事,那也不是什么天塌下来的事。
因为a=++i完全可以写成 i++; a=i。
a=i++完全可以写成 a=i; i++。
而且,这也是一种好的程序风格:++ -- 语句如非特殊需要,请单独一行使用。

IT菜鸟——救主 | 园豆:206 (菜鸟二级) | 2014-05-06 12:00
0

使用时如果++i 与 i++ 都可以的话,建议使用 ++i,因为++i 比 i++更快。i++ 需要对数据备份,++i不需要。特别用于对用户自定义的类型时,效果更明显。

huthnli | 园豆:202 (菜鸟二级) | 2014-06-13 09:37
0

楼主也可以参考下STL原码剖析中的list的实现,其中对前置++和后置++都有重载,从代码的理解上他们也许会有那么点区别,可以说有时候前置++的效率略高于后置++。

一念三千 | 园豆:202 (菜鸟二级) | 2014-10-02 00:53
0

int main(){

  int i=0,j=0,a,b;

  a=++i;

  b=j++;

  cout<<"i="<<i<<endl;

  cout<<"j="<<i<<endl;

  cout<<"a="<<a<<end;

  cout<<"b="<<b<<endl;

}

 

就能看出区别了

北落师问 | 园豆:109 (初学一级) | 2015-01-05 10:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册