以下是我想要了解的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
答案 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',因为这将首先减少数字然后进行比较。