i = i++;
++
2023-09-14 09:11:33 时间
在这里jvm里面有两个存储区,一个是暂存区(是一个堆栈,以下称为堆栈),另一个是变量区。
语句istore_1是将堆栈中的值弹出存入相应的变量区(赋值);语句iload_1是将变量区中的值暂存如堆栈中。
因为i = i++;是先将i的值(0)存入堆栈,然后对变量区中的i自加1,这时i的值的确是1,但是随后的istore_1又将堆栈的值(0)弹出赋给变量区的i,所以最后i = 0。
又因为i = ++i;是先对变量区中的i自加1,然后再将变量区中i的值(1)存入堆栈,虽然最后执行了istore_1,但也只是将堆栈中的值(1)弹出赋给变量区的i,所以i = ++i;的结果是i = 1。
相关文章
- 利用Notepad++插件(JSToolNpp):让JS代码格式化对齐
- notepad++ 开启/关闭 记住最后打开的文件
- (C++)关于i++和i++的左值、右值问题
- g++基本用法
- Notepad++ 格式化xml
- Notepad++ 实用插件安装
- 成功解决''g++' 不是内部或外部命令,也不是可运行的程序 或批处理文件
- lua调用C++函数崩溃时,查看lua的调用栈信息 (特别适用于tolua++)
- Notepad++ 删除空白行的方法
- Easylogging++之日志级别
- C ++ 函数模板求三个数的最大和
- Notepad++ 设置Tab为空格
- CANdb++和CANdb++ Admin概述
- Java中i++与++i区别