4 || ++at>10 && it>0) { System.out.print("stuff"); } System.out.print(-6ren">
gpt4 book ai didi

java - 为什么 "or"在 "and"之前?

转载 作者:搜寻专家 更新时间:2023-11-01 01:00:48 25 4
gpt4 key购买 nike

int it=9, at=9;

if(it>4 || ++at>10 && it>0)
{
System.out.print("stuff");
}

System.out.print(at);

打印出 stuff9,我想知道为什么我认为 ++at>10 && it>0 会首先被评估,从而使 at = 10。

最佳答案

运算符优先级只控制参数分组;它对执行顺序没有影响。几乎在所有情况下,Java 的规则都规定语句是从左到右执行的。 ||&& 的优先级导致 if 控制表达式被评估为

it>4 || (++at>10 && it>0)

但是 && 的优先级更高并不意味着 && 首先被评估。相反,

it>4

被评估,因为它是真的,|| 的短路行为意味着右侧根本没有被评估。

关于java - 为什么 "or"在 "and"之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23620919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com