【问题标题】:Which logic gate most correctly identifies with the following c# statement?哪个逻辑门最能正确识别以下 c# 语句?
【发布时间】:2013-08-18 19:01:35
【问题描述】:

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

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

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

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

【问题讨论】:

  • =assignment 运算符,而不是逻辑运算符。
  • c 分配给 b,然后分配给 a。
  • 这甚至不会编译,因为你没有初始化 c 变量。
  • @SonerGönül 你不读//get inputs 它被称为魔法代码你只需要思考和初始化:P
  • 重新删除的答案:是的,if(a == b == c) 被评估为if( (a == b) == c ) 并且适用于布尔值。但它会返回true,例如当 a=false,b=true,c=false 时。

标签: c# boolean-logic


【解决方案1】:

= 是赋值运算符,它与==(比较运算符)不同。这意味着在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) {  }

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      相关资源
      最近更新 更多