C#逻辑题
我有这些布尔值:
bool test = false && true || true; // true
bool test1 = false && (true || true); // false
现在,有人可以解释这是为什么吗?这些不应该是一样的吗?
谢谢 :)
I have those boolean values:
bool test = false && true || true; // true
bool test1 = false && (true || true); // false
Now, can anybody explain why this is? Shouldnt those be the same?
Thanks :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
&&运算符优先级 高于 ||这意味着您的第一个表达式相当于:
which Gives:
which Gives:
在第二种情况下,您显式对操作数进行分组:
which Gives:
which Gives:
The && operator has precedence over || meaning that your first expression is equivalent to:
which gives:
which gives:
In the second case you are explicitly grouping the operands:
which gives:
which gives:
在测试中你有
false && true
,这是 false,然后你有false || true
即true
。在第二种情况下,您首先评估
(true || true)
=>true
然后false && true
是false
。in test you have
false && true
, which is false and then you havefalse || true
which istrue
.In the second case you evaluate
(true || true)
at first =>true
and thenfalse && true
which isfalse
.&&
在第一个表达式中首先被求值 - 这意味着您最终得到false || 的结果true
,而不是false && true
在第二个表达式中。The
&&
is evaluated first in your first expression - meaning you end up with the result offalse || true
, rather thanfalse && true
in the second expression.第一个评估
false && true
首先 (false
),然后是|| 的结果true
,给出true
。第二个首先评估括号中的值,因此
true || true
然后是&& 的结果false
,给出false
The first evaluates
false && true
first (false
) and then the result with|| true
, which givestrue
.The second evaluates the value in the parenthesis first so
true || true
and then the result with&& false
, which givesfalse
在你的第一个例子中 false &&首先评估 true,然后评估为 false。那么 false OR true 当然会被评估为 true。
在你的第二个中,由于 () true OR true 首先被评估为 true,然后 true && false 被评估为 false。
所以这是完全有道理的。
In your first example false && true is evaluated first and it evaluated as false. Then false OR true is of course evaluated to true.
In your second, because of the () true OR true is evaluated first to true, then true && false is evaluated to false.
So it makes perfectly sense.
第一个:
满足一个条件,因此返回 true
第二个:
满足一个条件,因此返回 false
First one:
One condition satisfied, So its return true
Second one:
one condition failed, So its return false
布尔测试 = false &&真实 ||真的; // true
第一个为 true,因为该语句正在测试它是 true 还是 false。
bool test1 = false && (真||真); // false
第二个if false,因为该语句正在测试它是否为真或假。
bool test = false && true || true; // true
This first is true because the statement is testing whether the it is true or false.
bool test1 = false && (true || true); // false
The second one if false because the statement is testing whether it is true and false.
在第一个 &&优先于||因为你还没有明确分组。
在第二个中,(...) 导致||首先被评估。
因此结果不同。
In the first one && has precedence over || because you have not grouped explicitly.
In the second one, (...) lead to || being evaluated first.
Thus the differing results.
优先顺序按以下顺序流动
因此,在第一种情况下
&&
接管||
,在第二种情况下()
接管&&
>The order of precedence flows in the following order
Hence in first case
&&
takes over||
and insecond case()
takes over&&