2 changerzhuo 319 changerzhuo_319 于 2014.11.08 22:51 提问

Java的运算符 先后问题

for (int i = 0,m=0; i <10; i++) {

         m=m++;

        System.out.println(m);
    }

为什么输出的m一直等于0, 最主要是想知道 在这个代码中 m=m++;是怎么运行。一般来说

先把m赋值给m 然后 m在自增,这种情况下 输出的应该是1,2,3.。。。。。 但是实际上

输出的却一直是0 各位求解

3个回答

csdn7758258
csdn7758258   2014.11.09 15:54

因为它是先把m赋值给m,然后m再加1,而每次循环时m都赋值为0,所以m一直等于0。你想输出123...可以试试改成m=++m;

Kelley_cfy
Kelley_cfy   2014.11.18 11:24

你看看m++和++m的区别就知道了,m++运行后这一行代码m的值是不变的,就是说每次m = m++;本来m下一行要变成m+1但是你又重新赋值,又将m赋值成0

glydxm
glydxm   2015.07.08 21:36

m = 0;
关于m = m++计算过程:
第一步:把m值存在栈顶,即0;
第二步:计算m++,m = m+1,即1;
第三步:把栈顶值赋给m,即0;
m = m++这样写m永远不会变,

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!