i=i++深入解释

zz/2023/6/4 16:14:37

以下内容是在JAVA虚拟机中探究,学习C语言的小伙伴请自行绕开

一道基础的题目:

 

int i=0;
i=i++;
i=??

执行结果:0;

why??不应该是1吗?大脑中快速飞过计算步骤:

i初始化位0,题目中是i++,所以先进行i=i,i=0;
然后进行自加操作:i=1;

看似完美的步骤,其实是错的,难受哦。。。

那就往他祖坟上刨一下子:

int是基本类型,存在于栈中,但是变量名与值也是分开的。

那么开始把这个拆分一下:

i=i++开始拆分
i++ 是 i+1 ,但是i++是先赋值,再进行自加
去一个临时变量来代替i
temp = i;此时i还没有自加,所以temp=0;
返回temp的值,然后i再自加;

画个图来说明一下:

通过class,来看他的执行流程:

 

通过观察编译后的执行顺序,可以清楚的看到i=i++;的执行流程。

多谢各位大佬的指点。

 

http://www.ngui.cc/zz/2390170.html

相关文章

超简单!一部手机就能提取视频中的语音转换成文字

当我们工作中去整理一些视频资料时,有时候需要对视频中所讲的内容进行整理,这时候很多办公小白会采用传统的方法,就是需要一遍又一遍地看,并记录其中的内容。实际上我们可以提取视频中的语言,将相应的语音内容转换成文…

教你如何将语音转换成文字

语音识别是一种将人的语音转换为文本的的技术。语音识别可以直接把你说的话直接转换成文字, 使用起来也比较方便,不用动手,就可以输入你想要的文字。下面小编就来教大家如何将语音转换成文字。 工具:迅捷PDF阅读器 操作方法&#…

想把语音转成文字,就这样做

将语音转成文字的方法很多,如果你不怕麻烦你可以边听语音边敲文字,就是比较费时间。当我们想转化的语音时间比较长的时候往往是行不通的,那比较快速、省力的方法就是使用软件进行转写。给你推荐2个比较好用的转写软件。 一:滴答转…

语音识别技术,将语音转换成文字

现在越来越多的同学都不想打字,而是用语音来代替文字的输入,现在随着语音识别 技术的越来越成熟,完全可以应用到我们的日常生活里了。其实这项技术也可以应用 到工作上,比如利用语音来写文档,方便快捷。那么我们怎么实…

实用系列1 —— 视频中的语音转换成文字

实用系列1 —— 视频中的语音转换成文字python版本 背景说明 疫情原因,家里的老师亲戚需要对着电脑上网课,晋升为十八线小主播~ 备课的内容来源都是当地教育局的公开课,为了学习公开课的上课方法,只能自己慢速播放视…

某优job

目标url : aHR0cHM6Ly93d3cuNTFqb2IuY29tLw 抓取相关数据 通过对源代码的查看,可以很明确的知道,这些数据是同步加载的。 抓包分析: payload不变,由此可以确定url和发送的params 确定headers需要的字段 凭经验和实际测试可得…

手写代码(笔试面试真题)

★★★ 手写代码:实现forEach map filter reduce ★★★ 手写实现一个简易的 Vue Reactive ★★★ 手写代码,监测数组变化,并返回数组长度 ★★★ 手写原生继承,并说出局限性? ★★★★ 手写一个柯里化函数 ★★★…

2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---手写代码篇

★★★ 手写代码:实现forEach map filter reduce ★★★ 手写实现一个简易的 Vue Reactive ★★★ 手写代码,监测数组变化,并返回数组长度 ★★★ 手写原生继承,并说出局限性? ★★★★ 手写一个柯里化函数 ★★★…

可以设置过期时间的Java缓存Map

前言 最近项目需求需要一个类似于redis可以设置过期时间的K,V存储方式。项目前期暂时不引进redis,暂时用java内存代替。 解决方案 1. ExpiringMap 功能简介 : 1.可设置Map中的Entry在一段时间后自动过期。 2.可设置Map最大容纳值,当到达Maxim…

后端技术杂谈4:Elasticsearch与solr入门实践

阮一峰:全文搜索引擎 Elasticsearch 入门教程 阅读 1093收藏 762017-08-23原文链接:www.ruanyifeng.com9月7日-8日 北京,与 Google Twitch 等团队技术大咖面对面www.bagevent.com 全文搜索属于最常见的需求,开源的 Elasticsearch …