哪个逻辑门最正确地用以下c#语句标识?

时间:2013-08-18 10:09:41

标签: c# boolean-logic

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

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

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

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

2 个答案:

答案 0 :(得分:2)

=是分配运算符,它与==(比较运算符)不同。这意味着,如果a = b = c声明,则会将c的值分配给b,然后分配给a,后来由if进行评估。

它的评估如下:

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

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

// no need to check if a == c
if (a == b && b == c) {  }

答案 1 :(得分:0)

正如@ {I4V在您的IF中说的那样,您将c的值分配给B然后是A.因此,它总是在评估 true ,因为您没有这样做任何逻辑操作。

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