我的问题是为什么 for
循环中的这个条件会取消迭代,但在我看来条件已经满足?!如果我在不使用 AND 运算符循环的情况下尝试使用两个给定变量之一,则循环工作并无限继续。
bool a = false;
bool b = false;
for (; a && b == false; )
{
Console.WriteLine("");
}
最佳答案
这个条件
a && b == false
表示
a && (b == false)
因为 &&
做 short circuit evaluation ,第一个 false 将导致整个表达式的 false
,因此无需计算第二个表达式。
还要补充一点,即使使用单个 &
(不执行短路评估,您的完整条件也会导致 false
。
如果你想比较 a
和 b
是否为假,你可以这样做:
a == false && b == false
或
!a && !b
如果不涉及迭代变量,您还应该考虑使用 while
循环。
关于c# - 为什么逻辑 AND 运算的明显错误结果取消了 FOR 循环迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30626821/