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

15 篇文章 0 订阅

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值