为什么逻辑与操作的明显错误结果取消了FOR循环迭代

本文关键字:取消 结果 FOR 迭代 循环 错误 操作 为什么 | 更新日期: 2023-09-27 17:52:59

我的问题是,为什么for循环中的这个条件使它取消迭代,但在我看来,条件是满足的?!如果我尝试使用两个给定变量中的一个而不使用AND操作符循环工作并无限继续。

bool a = false;
bool b = false;
for (; a && b == false; )
{
    Console.WriteLine("");
}

为什么逻辑与操作的明显错误结果取消了FOR循环迭代

此条件

a && b == false

a && (b == false)

由于&&短路求值,第一个false将导致整个表达式为false,因此不需要对第二个表达式求值。

还要补充一点,即使使用单个&(它不执行短路评估),您的完整条件将导致false

如果你想比较ab为false,你可以这样做:

a == false && b == false

!a && !b

如果不涉及迭代变量,您还应该考虑使用while循环。

https://msdn.microsoft.com/en-us/library/aa691323%28v=vs.71%29.aspx
因为==&&之前求值,所以条件是a && (b == false)
所以错误的。