-1

こんにちは、このifように言えば、これら 2 つの別々のステートメントがあります。

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

これら 2 つの if ステートメントを 1 つに結合するにはどうすればよいですか? 出来ますか?もしそうなら、どのように?

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&&両方を満たす必要がある場合に使用します (論理 AND)。

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

またはoperator||、1 つだけを満たす場合 (論理 OR)

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

両方をtrueに評価するかどうかによって異なります...

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

... または少なくとも 1 つ ...

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

違いは、論理 AND (&&) または論理 OR (||) です。

于 2013-07-26T02:02:37.680 に答える
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 に答える
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 に答える