OOP 静态变量改变值

OOP static variable changing value

最近在漫画里看到这段代码,没看懂。有人可以向我解释一下吗?变量应该改变它的值有什么理由吗?

static bool isCrazyMurderingRobot =  false;

void interact_with_humans(void) {
   if (isCrazyMurderingRobot = true)
      kill(humans);
   else 
      be_nice_to(humans)
}

这是漫画:http://oppressive-silence.com/comics/oh-no-the-robots

原因可能是在许多编程语言中, 检查相等性是通过使用 == 完成的,而使用单个 = 符号会将值赋给变量)。

所以代码

if (isCrazyMurderingRobot = true)

会将 true 赋值给变量,第一个条件将始终满足(因为赋值的结果为真)。

正确的行是:

// use  '==' here instead of '=' to check if variable is set
// using a single '=' would assign the value instead
if (isCrazyMurderingRobot == true)

有关更多详细信息,请查看这些说明(它们适用于 C# 语言,但运算符在其他语言中的行为类似 Java 等...)

assignment (=) 运算符。
equality (==) 运算符。