Java 澄清此代码导致错误和不正确的原因
以下代码导致false。谁能给我解释一下原因吗?我在理解使用真值表时遇到了一些困难。我是一名java初学者,提前感谢您的帮助Java 澄清此代码导致错误和不正确的原因,java,truthtable,Java,Truthtable,以下代码导致false。谁能给我解释一下原因吗?我在理解使用真值表时遇到了一些困难。我是一名java初学者,提前感谢您的帮助 boolean x = false; boolean y = true; boolean z = true; System.out.println((!x || y && !z)); 我以为打印的行是假的,但正确的答案是真的。这里起作用的因素是运算符优先级、从左到右的求值以及“&&”和“||”的特殊“短路”性质 '和'绑定比'或'更紧' 首先,运算符优
boolean x = false;
boolean y = true;
boolean z = true;
System.out.println((!x || y && !z));
我以为打印的行是假的,但正确的答案是真的。这里起作用的因素是运算符优先级、从左到右的求值以及“&&”和“||”的特殊“短路”性质 '和'绑定比'或'更紧' 首先,运算符优先级意味着表达式是有效的
( (!x) || (y && !z) );
考虑到“| |”的短路执行,一旦我们知道!如果x
为真,则不会对右侧进行求值
我写这篇文章是为了在评估每个术语时打印出来:
static boolean P(String s, boolean x) { System.out.println(" "+s); return x; }
然后将每个布尔术语“b”替换为对p的调用(“b”,b):
产出结果
!x
true
注意:与y或z打印无关。以下代码导致false-否,打印true。
!x
true