こんにちは、このif
ように言えば、これら 2 つの別々のステートメントがあります。
if (powerlevel <= 0) // <--- ends up having no effect
if (src.health <= 0)
the_thing_to_do();
これら 2 つの if ステートメントを 1 つに結合するにはどうすればよいですか? 出来ますか?もしそうなら、どのように?
こんにちは、このif
ように言えば、これら 2 つの別々のステートメントがあります。
if (powerlevel <= 0) // <--- ends up having no effect
if (src.health <= 0)
the_thing_to_do();
これら 2 つの if ステートメントを 1 つに結合するにはどうすればよいですか? 出来ますか?もしそうなら、どのように?
両方のステートメントを真にする場合は、論理 AND を使用します
if(powerlevel <= 0 && src.health <= 0)
いずれかのステートメントを真にしたい場合は、論理 OR を使用します
if(powerlevel <= 0 || src.health <= 0)
上記の演算子はどちらも論理演算子です
operator&&
両方を満たす必要がある場合に使用します (論理 AND)。
if(powerlevel <= 0 && src.health <= 0) { .. }
またはoperator||
、1 つだけを満たす場合 (論理 OR)
if(powerlevel <= 0 || src.health <= 0) { .. }
両方をtrueに評価するかどうかによって異なります...
if ((powerlevel <= 0) && (src.health <= 0)) {
// do stuff
}
... または少なくとも 1 つ ...
if ((powerlevel <= 0) || (src.health <= 0)) {
// do stuff
}
違いは、論理 AND (&&) または論理 OR (||) です。
または && を使用したくない場合は、三項演算子を使用できます
#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;
}
意味がある場合は代替案です(時々)。
Both true:
if (!(src.health > 0 || powerlevel > 0)) {}
at least one is true:
if (!(src.health > 0 && powerlevel > 0)) {}