java和C++中自增i++的区别

时间:2020-12-28 02:13:11

JAVA和C++对i++自增操作符的处理是不同的,JAVA是在内存中复制一份i值的拷贝再运算,而C++中是直接在原值上运算。


int i = 0;
i = i++;
在java中i=i++的运算实质是先执行在内存中复制一份i的拷贝再i++,然后把拷贝的i值赋给接收者,所以i为原值0
在C++中,则是先执行i=i 此时i为0 再执行i++ 此时i为1,故输出1


++ (自增) :  自增就是相当于操作数+1.

前自增:++位于操作数的前面。  比如: ++a;


前自增:先自增,后使用。
后自增: 先使用,后自增。


class Demo4 
{
public static void main(String[] args)
{

int a = 0;
//int sum = ++a; //前自增。 a = a+1 , sum = a
int sum = a++; //后自增 sum = 0 , a = a+1
System.out.println("sum= "+ sum+ " a = "+ a); //0 1


int i = 0;
i = i++; // 后自增... 后自增要使用到没有+1之前的值。

System.out.println( "i= "+i);//0
}
}


    后自增在jvm的运行原理:
因为后自增要使用到没有+1之前 的值,那么jvm会先声明一个变量用于保存没有+1之前的值。
int i = 0;
i = i++;
原理:
1. int temp = i; // 声明了一个临时变量用于记录了i没有加1之前的值。
2. 自增。  i = i+1;   i = 1;
3. 把temp用作了表达式 的结果。

i的值发生了几次变化:
i = 0 -----> 1----> 0