++i和i++有什么区别啊?

如题所述

    区别在于:++先做别的事,再自己加1,++i先自己加1,再做别的事情,形象的理解,你可以把++i比作自私的人,首先考虑自己的事,i++是无私的,先为别人照想,这样方便记忆。

    首先我们定义一个变量i,int i=5,然后我们做执行printf(“%d”,i++),我们会发现输出结果是5。

    是为什么呢,我们要搞清楚printf(“%d”,i++)这句话是做两件事:1.输出i、2.i=i+1,这里的顺序,是先输出i,再执行i=i+1。

    然后我们初始化变量i,i=5;、然后我们做执行printf(“%d”,++i)、我们会发现输出结果是6,其实printf(“%d”,++i);做的也是这两件事:1.输出i、2.i=i+1,只是先做i=i+1,然后输出i。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-27

1.如果只是看i++和++i,这两个是等价的,都等同于i=i+1,都是变量自身加1。
2.在一般情况下,它们都是跟赋值联系在一起。比如:

int a; 
a=i++;//将i的值赋值给a,即a=i;然后再执行i=i+1;
也就是【a=i++;】与【a=i; i=i+1;】等价。
a=++i;//将i+1的值赋给a,即a=i+1;然后再执行i=i+1;
也就是【a=++i;】与【a=i+1;i=i+1;】等价。

3.总结:
①前置++是将自身加1的值赋值给新变量,同时自身也加1;
②后置++是将自身的值赋给新变量,然后才自身加1。


第2个回答  2018-01-21

++i表示先把i加1再赋值,i++表示先赋值后再加1。
++i的值是自增后的值,i++的值是自增前的值。如:
int i = 0;
++i;//先自增
System.out.println(i)
输出结果:0

int i = 0;
i++;先赋值
System.out.println(i)
输出结果:1

1、++i 的用法(以 a=++i ,i=2 为例)
先将 i 值加 1 (也就是 i=i+1 ),然后赋给变量 a (也就是 a=i ),    则最终 a 值等于 3 , i 值等于 3 。 所以 a=++i 相当于 i=i+1 ,a=i
2、i++ 的用法(以 a=i++ ,i=2 为例)
先将 i 值赋给变量 a (也就是 a=i ),然后 i 值加 1 (也就是 i=i+1 ), 则最终 a 值等于 2 ,i 值等于 3 。 所以 a=i++ 相当于 a=i , i=i+1

第3个回答  2017-12-31

    至于++i和i++有什么区别,举个例子 

    1.a = i++; 等校为

    a = i;

    i = i + 1;

    2.a = ++i; 等校为

    i = i + 1;

    a = i;

    i++和++i的 最重要的区别大家都知道就是 +1和返回值的顺序 .但还有一个区别(在C++中)就是i++在实现的时候,产 生了一个local object class INT; //++i 

所以从效率上来说++i比i++来的更有效率 
具体细节你可以看More Effective C++ 的M6 
看看C++类重载运算符就知道了。 


相似回答