"num" 如何在此布尔值中发生变化,使其变为 6?

How does "num" become changed in this boolean so that it becomes 6?

int num = 5;
if (num != 5 & num++ != 6 | (num = num--) == 6)
System.out.println("true " + num);
else
System.out.println("false " + num);

这段代码的输出是“真,6”。我需要帮助来理解 num 如何通过布尔语句评估为数字 6。

所以这里实际上发生了几件事。

你的问题的答案是,当 java 在 num++ 上看到 ++ 时,它总是会递增 1。

此外,如果您尝试使用布尔运算,则需要使用 && 和 ||。单个 & 和 |用于按位运算。

正如科林所说,这里实际上发生了很多事情!

我先把if条件的表达式取一半;

    num != 5 & num++ != 6 

现在它所做的是首先评估 num 不等于 5,即 false

其次,判断num不等于6,即true(后增)

三、按位与运算求值,即false & true
为表达式的这一半生成结果false

第四,增加 num 的值,即从 5 到 6


现在剩下的表达式;

    (num = num--) == 6

这部分表达式首先计算括号。

此处 num-- 递减 num 和 returns 当前为 6 的旧值。 然后这个值又被分配给 num 这是一个经典的 postincrement/assignment 混淆(请参阅 了解详细解释)

其次,它评估 num 是否等于 6 ,即 true

这就是表达式末尾 num 的值计算为 6 的方式。

这使得表达式的后半部分true




此后 | 按位包含或运算符优先并计算整个表达式,即

    false | true

成功 true.