boolean a = true;
boolean b = true;
boolean c = false;
System.out.println(a || b && c); // true
System.out.println(b && c || a); // true
我最近才发现我认为这里有些奇怪。为什么
&&
和||
处于不同的优先级?我会以为他们处于同一水平。以上证明了这一点。即使从左到右的求值对第一个给出的都是假,而第二个则给出的是真,这两个陈述都是正确的。有人知道这背后的原因吗?
(顺便说一句,我只是在这里使用了很多括号,但是是旧代码提出了这个问题)
最佳答案
因为在传统的数学符号中,and
(logical conjunction)的优先级高于or
(logical disjunction)。
出于显而易见的原因,所有非深奥的编程语言都将反映这种事情的现有约定。
关于java - 为什么&&的优先级高于|| (Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58438405/