这是我在这里的第一篇文章,所以请原谅任何协议错误。
我的问题只是想了解以下 Java 代码发生了什么。我完全理解使用括号可以澄清一切,但结果输出似乎与 Java 操作顺序的约定背道而驰。
public class Tester
{
public static void main(String[] args)
{
int total=9, num=13;
if (total>4 || ++num>15 && total>0)
{
System.out.println("short");
}
System.out.println(num);
}
}
输出为:short 13
很明显 ++num 没有执行。如果遵守了严格的操作顺序,那应该是第一件事。它没有。所以接下来是&&。如果 && 是按照 || 的优先顺序完成的,那么同样... ++num 应该首先发生。它没有。所以,对我来说,输出似乎是由 || 决定的。首先执行,将 ++num 短路,然后与 && 一起使用,导致打印短路。是否只是忽略了运算规则的顺序,而布尔表达式从左到右执行?增量运算符是否导致不规则行为?
感谢您提供有关此代码实际情况的任何见解。