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)。
出于显而易见的原因,所有非深奥的编程语言都将反射(reflect)这种事情的现有约定。
关于java - 为什么&&的优先级高于|| (Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20844191/