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)
}
原因可能是在许多编程语言中,
检查相等性是通过使用 ==
完成的,而使用单个 =
符号会将值赋给变量)。
所以代码
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 (==) 运算符。
最近在漫画里看到这段代码,没看懂。有人可以向我解释一下吗?变量应该改变它的值有什么理由吗?
static bool isCrazyMurderingRobot = false;
void interact_with_humans(void) {
if (isCrazyMurderingRobot = true)
kill(humans);
else
be_nice_to(humans)
}
原因可能是在许多编程语言中,
检查相等性是通过使用 ==
完成的,而使用单个 =
符号会将值赋给变量)。
所以代码
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 (==) 运算符。