1

我只是在玩一个控制台应用程序生成逻辑真值表并点击以下 c# 语句

bool a, b, c; //get inputs
if(a = b = c)
    {
    Console.WriteLine("sucess"); // print if 1
    }

该语句仅在为if(a = b = c)真时才返回真bool c(编辑:我的期望是所有输入都需要相同才能成功)。有人可以解释一下这个语句是如何执行的吗?

编辑:我看到 IV4s 的答案是 if( a== b == c )出于好奇,我编译它并且它有效。编辑2:亨克是对的。a=false,b=true,c=false 返回真。

4

2 回答 2

2

=是赋值运算符,它与==(比较运算符)不同。这意味着在a = b = cstatment 的情况下,它分配 to 的值,c然后b分配 to a,稍后由 评估if

它是这样评价的:

b = c;
a = b;
if (a) { }

如果你想确保所有变量都相等,那么你需要这样做:

// no need to check if a == c
if (a == b && b == c) {  }
于 2013-08-18T10:13:54.993 回答
0

正如@I4V 所说,您IF将 c 的值分配给 B,然后分配给 A。因此它总是在评估,true因为您没有执行任何逻辑操作。

=是赋值,==用于逻辑运算。

于 2013-08-18T10:13:58.840 回答