OOP静态变量值

时间:2016-08-13 01:20:27

标签: oop language-agnostic

我最近在漫画中发现了这段代码,我不明白。有人可以向我解释一下吗?变量应该改变它的值是否有任何理由?

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

1 个答案:

答案 0 :(得分:2)

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

所以代码

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 (==)运营商。