区别在于:++先做别的事,再自己加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。
++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
至于++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++类重载运算符就知道了。