在if语句中评估数学表达式条件

时间:2017-06-10 17:22:59

标签: java

以下是我想要了解的Java代码部分。我想知道为什么num2减少但在评估if语句时不使用它的结果。当我改变" num2--"到" num2 - 1"它会返回我期望的内容:" true12"。
我错过了什么?我正在使用IntelliJ IDEA CE 2017.1

    boolean flag = false;
    int num1 = 1, num2 = 2;

    if ((num1) == (num2--)) {
        flag = true;
    }
    System.out.println("flag, num1, num2: " + flag + num1 + num2);

给出了输出:

flag, num1, num2: false11

Process finished with exit code 0

3 个答案:

答案 0 :(得分:0)

首先完成if语句中的比较。这意味着评估表达式(1 == 2)。在此语句之后,num2将减1。这意味着打印结果应该产生:假1 1.

如果将num2--更改为--num2,则在进行比较之前,num2将减1。因此结果将为True 1 1。

答案 1 :(得分:0)

如果整数变量旁边有--++,它实际上会修改该变量。与variable - 1相反,int num = 5; int num2 = num - 1; System.out.println(num); #will print 5 System.out.println(num2); #will print 4 num--; #Actually decreases num. Is the same as num = num - 1 System.out.println(num); #will print 4 只返回操作的结果而不修改变量。

所以

--num

num--int res = num-- + 7; 之间的区别在于,在第一种情况下,递减将始终在同一行上的任何其他操作之前完成,在后一种情况下,递减将在之后完成

最好通过一个例子来说明这一点。

int res = num + 7;
num = num - 1;

相同
int res = --num + 7;

,而

num = num - 1;
int res = num + 7;

相同
{{1}}

我希望有所帮助。

答案 2 :(得分:0)

这是因为num2-- firs使用数字然后减少。首先进行比较,然后减少(在第二行中)。 基本上首先(1==2)完成,然后在第二行num2=num2-1;完成。 而不是num2--你应该使用'--num2',因为这将首先减少数字然后进行比较。