提问人:Wayne Griffin 提问时间:8/15/2021 更新时间:8/15/2021 访问量:486
&& 和 ||在同一表达式 [duplicate] 中
&& and || in the same expression [duplicate]
问:
我是编程新手,所以如果这真的是基本的,我深表歉意。我只是无法理解如何评估这个表达式的逻辑。我知道 AND 和 OR 之间的区别。我也知道短路和优先级。这是我正在努力表达的。
bool a = false
bool b = true
bool c = true
If (a && b || c)
{
Console.WriteLine("True");
}
此结果为 true。但我认为一旦检查了 a,它就会短路,因为 && 的优先级并不完全正确。
有人可以解释为什么这是有效的吗?
答:
4赞
Mitch
8/15/2021
#1
&&
绑定比 更紧密。所以等价于 。||
a && b || c
(a && b) || c
有关 C# 中所有运算符的优先级,请参阅 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/boolean-logical-operators
-1赞
Soios
8/15/2021
#2
它是这样评估的:
首先:a 和 b 导致 true 或 false = (a & b)
第二:true OR false (从第一步开始) OR true = (a & b) ||c
因为你在 OR 的右侧有一个 true,它是真的
评论
0赞
Wayne Griffin
8/15/2021
当被宣布为假时,如何显示为真,对不起?编译器实际上是这样看的,还是错别字?a
0赞
Soios
8/15/2021
应该明确结果可能是真的,也可能是假的。不好意思
评论
&&
a
b
||
c
( a && ( b || c ) )
( (a && b ) || c )