提问人:Entity 提问时间:4/20/2011 最后编辑:razlebeEntity 更新时间:4/28/2011 访问量:6177
(true & false || true) 在 C# 中是什么意思?
What is the meaning of (true && false || true) in C#?
问:
如果我有这个等式:
var x = (true && false || true)
这是否等同于:
var x = ((true && false) || true)
艺术
var x = (true && (false || true))
这背后的逻辑是什么?
答:
&&
具有更高的优先级,因此第二种形式(三者中)是正确的。至于逻辑,往往与乘法和加法模糊地联系在一起(如果你分别使用零和非零来表示假和真,运算符就有等效的语义)。但大多数情况下,它只是自 C 以来的方式,可能在 C 之前。&&
||
AND 胜过 OR。
所以它会
var x = ((true && false) || true)
请参阅运算符优先级和关联性。
评论
我相信是
var x = ((true && false) || true)
...根据 MSDN 的优先级。&&
你可能会认为,无论谁写了那行特定的代码,都可能通过在正确的位置插入括号来明确他们的意图。帮其他人一个忙,把他们加进去。
如果在此表达式中使用 ||没错,平均值与其他结果无关紧要,它总是真的
评论
它相当于
var x = ((true && false) || true)
&& 运算符的优先级高于 ||算子。
评论
上面的表达式的计算结果是因为运算符优先级(&& 的优先级高于 ||)。((true && false) || true)
有关运算符优先级的更多信息,请查看此链接:http://msdn.microsoft.com/en-us/library/aa691323(v=vs.71).aspx
在布尔逻辑中,“not”() 在“and”() 之前计算,“and”在“或”() 之前计算。通过使用 double () 和 double (),这些运算符将短路,这不会影响逻辑结果,但会导致右侧的项在需要时无法计算。!
&&
||
&&
||
因此
var x = (true && false || true)
评估 评估 到false|| true
true
和
var x = ((true && false) || true)
评估 评估 到false || true
true
和
var x = (true && (false || true))
评估 评估 到true && true
true
评论
&& 的优先级高于 || 因此,前两个用例的行为将完全相同。 大括号在这里没有意义,就像在:
a * b + c = (a * b) + c
您可以使用大括号控制优先级和关联性。因此,第三个用例将检查 OR 条件,然后检查 AND。
评论