-1

嗨,当这样放置时,我有这两个单独的if陈述;

if (powerlevel <= 0) // <--- ends up having no effect
if (src.health <= 0)
    the_thing_to_do();

如何将这两个 if 语句合并为一个?可能吗?如果有怎么办?

4

5 回答 5

6

如果您希望两个语句都为真,请使用逻辑 AND

if(powerlevel <= 0 && src.health <= 0) 

如果您希望其中任何一个语句为真,请使用逻辑 OR

if(powerlevel <= 0 || src.health <= 0) 

上述两个运算符都是逻辑运算符

于 2013-07-26T02:01:51.000 回答
4

operator&&如果您希望同时满足这两个条件,请使用(逻辑与)

if(powerlevel <= 0 && src.health <= 0) { .. }

或者operator||如果您只想满足一个(逻辑或)

if(powerlevel <= 0 || src.health <= 0) { .. }
于 2013-07-26T02:01:17.970 回答
4

这取决于您是否希望两者都评估为真......

if ((powerlevel <= 0) && (src.health <= 0)) {
  // do stuff
}

……或者至少一个……

if ((powerlevel <= 0) || (src.health <= 0)) {
  // do stuff
}

区别在于逻辑与 (&&) 或逻辑或 (||)

于 2013-07-26T02:02:37.680 回答
1

如果它是有意义的(有时)只是一个替代品。

Both true:
if (!(src.health > 0  || powerlevel > 0)) {}

at least one is true:
if (!(src.health > 0  && powerlevel > 0)) {}
于 2013-07-26T02:54:00.173 回答
1

或者,如果您不想使用 &&,您可以使用三元运算符

#include <iostream>

int main (int argc, char* argv[])
{
  struct
  {
      int health;
  } src;

  int powerlevel = 1;
  src.health = 1;

 bool result((powerlevel <= 0) ? ((src.health <=0) ? true : false)  : false);

 std::cout << "Result: " << result << std::endl;
}
于 2013-07-26T02:15:11.573 回答