我正在玩一个生成逻辑真值表的控制台应用程序并点击下面的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。
答案 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
,因为您没有这样做任何逻辑操作。
=
是赋值,==
用于逻辑运算。