如何将两个if语句合并为一个

时间:2013-07-26 02:00:09

标签: c++

嗨我有两个单独的if语句,如果这样说的话;

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

如何将这两个if语句组合成一个?可能吗?如果是这样的话?

5 个答案:

答案 0 :(得分:6)

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

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

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

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

上述两个运算符均为logical operators

答案 1 :(得分:4)

如果您希望满足这两个条件,请使用operator&& <逻辑AND

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

operator||如果您只想要一个(逻辑OR)

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

答案 2 :(得分:4)

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

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

......或至少一个......

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

差异是逻辑AND(&amp;&amp;)或逻辑OR(||)

答案 3 :(得分:1)

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

#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;
}

答案 4 :(得分:1)

如果它有意义(有时),则只是另一种选择。

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

at least one is true:
if (!(src.health > 0  && powerlevel > 0)) {}