i++与++i陷阱

对于++i与i++编程必不可少,它们的区别:一般人只知道++i是先将i加一再进行其他操作,i++是先将i进行其他操作,再将其加一。

但是对于i++其中的执行过程,语言环境很关键。先来两个程序,看结果是否是认为的结果:

1、Java环境下

public class JiaJia {
public static void main(String[] arg){
    int count1=0,count2=0;
    for(int i=0;i<10;++i)
        {
          count1=count1++;
          count2=++count2;
        }
    System.out.println("count1="+count1);
    System.out.println("count2="+count2);
}
}

结果 

2、C++环境下

#include<stdio.h>
#include<string.h>
using namespace std;
int main(){
int count1=0,count2=0;
for(int i=0;i<10;++i)
{
count1=count1++;
count2=++count2;
}
printf("count1=%d ,count2=%d",count1,count2);
}

结果:

3、结果分析

C++环境下是我们认为的结果,而Java环境下为什么不是我们认为的结果?

在Java环境下,对于count=count++,处理过程是:首先把count的值(注意是值,不是引用)拷贝到一个临时变量区,然后对count加一,最后返回临时变量区的值。

原文地址:https://www.cnblogs.com/duange/p/6511416.html