【问题标题】:OOP static variable changing valueOOP 静态变量改变值
【发布时间】:2016-12-20 01:52:54
【问题描述】:

我最近在漫画中看到了这段代码,我不明白。有人可以向我解释一下吗?变量有什么理由改变它的值吗?

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

【问题讨论】:

标签: oop language-agnostic


【解决方案1】:

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

所以代码

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 (==) 运算符。

【讨论】:

    猜你喜欢
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    相关资源
    最近更新 更多