C# 为什么逻辑AND运算的明显错误结果会抵消FOR循环迭代
我的问题是,为什么C# 为什么逻辑AND运算的明显错误结果会抵消FOR循环迭代,c#,C#,我的问题是,为什么for循环中的这个条件会使它取消迭代,但在我看来,这个条件已经满足了?!如果我尝试使用两个给定变量中的一个,而不使用AND运算符,则循环工作并无限继续 bool a = false; bool b = false; for (; a && b == false; ) { Console.WriteLine(""); } 这种情况 a && b == false 意味着 由于&&确实,第一个false将导致整个表达式的false,因此无
for
循环中的这个条件会使它取消迭代,但在我看来,这个条件已经满足了?!如果我尝试使用两个给定变量中的一个,而不使用AND运算符,则循环工作并无限继续
bool a = false;
bool b = false;
for (; a && b == false; )
{
Console.WriteLine("");
}
这种情况
a && b == false
意味着
由于&&
确实,第一个false将导致整个表达式的false
,因此无需对第二个表达式求值
还要补充的是,即使只有一个&
(不执行短路评估),您的完整状况也会导致错误
如果要将a
和b
都比较为false,可以执行以下操作:
a == false && b == false
或
你也应该考虑使用<代码> 循环,如果没有迭代变量涉及。
< P>此条件
a && b == false
意味着
由于&&
确实,第一个false将导致整个表达式的false
,因此无需对第二个表达式求值
还要补充的是,即使只有一个&
(不执行短路评估),您的完整状况也会导致错误
如果要将a
和b
都比较为false,可以执行以下操作:
a == false && b == false
或
你也应该考虑使用<代码> 循环,如果没有迭代变量涉及。
BR>
因为
=
是在&&
之前计算的,所以条件是a&&(b==false)
太假了。
因为=
是在&&
之前计算的,所以条件是a&&(b==false)
太假了。在我看来,你认为你的代码将a
和b
与假进行比较,这不是真的。只有b
与假进行比较,而a
应该是真的。谢谢你,我正绞尽脑汁想它到底出了什么问题。在我看来,你认为你的代码是在比较a
和b
到false,那不是真的。只有b
与false相比,而a
应该是真的。谢谢,我当时正绞尽脑汁想它到底出了什么问题。我认为你的答案是最正确的。其他答案要么不回答问题,要么添加太多不相关的信息,只会模糊问题的答案继续。+1丹尼斯,我感谢你的帮助。谢谢。我认为你的答案是最恰当的。其他答案要么不回答问题,要么添加太多不相关的信息,只会模糊问题的答案。+1丹尼斯,我感谢你的帮助。谢谢。