1

请帮助我了解两个“TRUE”和“FALSE”输出之间的区别。并指导我如何在 Oracle Docs 中获取此逻辑和运算符相关主题。

int i = 1;
int j = 2;

System.out.println(i==j--);// FALSE
j = 2;
System.out.println(i==j-1);//TRUE
j = 2;
System.out.println(i==--j);//TRUE
4

3 回答 3

3

i == j--方法i == j; j = j - 1;

i == j-1方法i == (j-1);

i == --j方法j = j - 1; i == j;

这是运算符优先级表,按从高到低的顺序排列。例如,-优先级高于==,这就是为什么i==j-1意味着i==(j-1)

于 2013-04-24T02:43:39.827 回答
3

等价物在下表中,以及每行开头的iis1jis的解释:2

i==j--;   i==j; j--;  // 1==2 is false, j <- 1
i==j-1;   i==j-1;     // 1==(2-1) is true, j does not change
i==--j;   --j; i==j;  // j <- 1, 1==1 is true
于 2013-04-24T02:44:28.270 回答
1

区别在于:

j-- 发生在调用之后(因此在比较期间它评估 i==j 是 j 的当前值。- 发生在(后缀)之后

j-1 是表达式的一部分,因此作为计算的一部分发生

--j 是函数调用前,所以它在(前缀)之前被减去

于 2013-04-24T02:44:09.633 回答