Java的前增量和后增量 [英] Pre- and postincrement in Java

查看:37
本文介绍了Java的前增量和后增量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是想创建一个Java拼图,但我感到困惑.难题的一部分是:

I just wanted to create a little Java-Puzzle, but I puzzled myself. One part of the puzzle is:

以下代码段的作用是什么:

What does the following piece of code do:

public class test {
    public static void main(String[] args) {
        int i = 1;
        i += ++i + i++ + ++i;

        System.out.println("i = " + i);
    }
}

它输出 9 .

我的(至少部分是)错误的解释:

我不太确定,但是我认为 i + = 之后的词会像这样评估:

I'm not quite sure, but I think the term after i += gets evaluated like this:

所以

int i = 1;
i += ++i + i++ + ++i;

int i = 1;
i += ((++i) + (i++)) + (++i);

这是从左到右进行评估的(请参见 Java评估前后的评估).

This gets evaluated from left to right (See Pre and postincrement java evaluation).

第一个 ++ i i 递增到 2 ,并返回 2 .所以你有:

The first ++i increments i to 2 and returns 2. So you have:

i = 2;
i += (2 + (i++)) + (++i);

i ++ 返回 2 ,因为它是 i 的新值,并将 i 递增为<代码> 3 :

The i++ returns 2, as it is the new value of i, and increments i to 3:

i = 3;
i += (2 + 2) + ++i;

第二个 ++ i i 递增到 4 ,并返回 4 :

The second ++i increments i to 4 and returns 4:

i = 4;
i += (2 + 2) + 4;

因此,您最终得到的是 12 ,而不是 9 .

So you end up with 12, not 9.

我的解释中的错误在哪里?正确的解释是什么?

推荐答案

i + = ++ i + i ++ + ++ i; i = i + ++相同i + i ++ + ++ i;

从左到右计算右侧,得出 i = 1 + 2 + 2 + 4; (得出 i = 9 ).

The right-hand side is calculated from left-to-right, yielding i = 1 + 2 + 2 + 4; (which yields i = 9).

这篇关于Java的前增量和后增量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆