永发信息网

Java运算问题

答案:4  悬赏:0  手机版
解决时间 2021-03-17 02:31
Java运算问题
最佳答案
int i=1
i+=++i;
等价下面:
i=i+(++i);
i=1+2
i=3追问++i后i的值不是成2了吗 那么i+2不是4吗追答你这会就迷糊在赋值的时候一个先后顺序问题,
++i 是2没错,但是左边的i也就是进入内存等待计算的仍然是1,此刻还没运算完毕,也就是说
还没决定i到底该赋值是几,懂了没?
在内存中没走完最后一步,就不算赋值完成.懂了没?
全部回答
考察的是++i ,表达式的值跟变量的值,可以留个邮箱我把资料发给你
你这个相当于i=i+ ++i,这样应该能明白了吧,这里的=号是赋值的意思,最后才计算,所以是3

我的建议是不要研究也不要写出这样的代码。这种代码在C/C++中是未定义行为。虽然我没有查到Java文档对此的定义,但鉴于大多数开发机器安装的都是Oracle的jdk,结果还是有参考性的。查看一下这段代码的bytecode:

解释一下每一行:

0: iconst_1 常数1入栈
1: istore_1 栈顶元素出栈并赋值给位置1的int型变量 (0~1对应Java代码:i=1)
2: iload_1 从位置1的int型变量中读出值并入栈
3: iinc 1,1 将位置1的int型变量自增1 (对应Java代码:++i)
4: iload_1 从位置1的int型变量中读出值并入栈
5: iadd 弹出栈顶两个int型变量并做加法,结果入栈 (对应Java代码:i+=i,结果为1+2=3)
6: istore_1 将第5步的结果写回变量i,此时i就变为3。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我现在山地车通勤少了,越野多了,换了燕把和
外国书籍的起源
12姐妹 孔明锁 笼中取球解法
小美1角复印地址在哪,我要去那里办事
把毛笔当做武器的玄幻小说
测试纸上蓝绿色标记线和c区的对照线颜色比较
四年级数学有200朵,按3朵红花,4朵白花,5朵
为什么p0E供电交换机代不动大华摄像头
谢安琪势不两立什么意思
关于个人办小学初中寒暑假班
为什么家里所有水龙头第二天早上起来放的水都
花语花店和平路店地址在什么地方,想过去办事
求助胡萝卜料头花花样几种 技巧
有什么好的投资项目?
天津杰泰克自动化怎么样
推荐资讯
六神花露水可以驱赶蜈蚣吗
怎么把咀嚼片磨成粉
地铁8号线或者15号线沿途离市区远点快捷连锁
古人著书立说那么多,为什么古人没有申请版权
你们说说婚后的女人是这怎样的
这五种注塑原料的化学成分:A3W-BASF、C3U-BA
It is strongly suggested that measures stu
大米5公斤多少钱,大米5公斤怎么样
剑阁县普安中学地址有知道的么?有点事想过去
note5怎么打开手机邮箱文件
龙武2攻略 陶潜跟班在在什么地方
小时候看的一部儿童电视剧男主角叫狗蛋一帮学
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?