为什么逻辑与操作的明显错误结果取消了FOR循环迭代
本文关键字:取消 结果 FOR 迭代 循环 错误 操作 为什么 | 更新日期: 2023-09-27 17:52:59
我的问题是,为什么for
循环中的这个条件使它取消迭代,但在我看来,条件是满足的?!如果我尝试使用两个给定变量中的一个而不使用AND操作符循环工作并无限继续。
bool a = false;
bool b = false;
for (; a && b == false; )
{
Console.WriteLine("");
}
此条件
a && b == false
是
a && (b == false)
由于&&
对短路求值,第一个false将导致整个表达式为false
,因此不需要对第二个表达式求值。
还要补充一点,即使使用单个&
(它不执行短路评估),您的完整条件将导致false
。
如果你想比较a
和b
为false,你可以这样做:
a == false && b == false
或
!a && !b
如果不涉及迭代变量,您还应该考虑使用while
循环。
https://msdn.microsoft.com/en-us/library/aa691323%28v=vs.71%29.aspx
因为==
在&&
之前求值,所以条件是a && (b == false)
所以错误的。