m=m++,结果让你大吃一惊。
Posted 在天成象
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了m=m++,结果让你大吃一惊。相关的知识,希望对你有一定的参考价值。
如图,本来以为m=m++和m++是同一个效果,没想到m的值居然还是0.
原来m++是一个表达式,是有返回值的,它的返回值就是m自加前的值,Java对自加是这样处理的:首先把m的值(注意是值,不是引用)拷贝到一个临时变量区,然后对m变量加1,最后返回临时变量区的值。程序第一次循环时的详细处理步骤如下: 步骤1 JVM把m值(其值是0)拷贝到临时变量区。 步骤2 m值加1,这时候m的值是1。 步骤3 返回临时变量区的值,注意这个值是0,没修改过。 步骤4 返回值赋值给m,此时m值被重置成0。
只能说java的套路太深了。
据说在c++里面,m=m++和m++真的是一个效果哦。
以上是关于m=m++,结果让你大吃一惊。的主要内容,如果未能解决你的问题,请参考以下文章
ATcoderAtCoder Beginner Contest 159题解