嗨我有两个单独的if
语句,如果这样说的话;
if (powerlevel <= 0) // <--- ends up having no effect
if (src.health <= 0)
the_thing_to_do();
如何将这两个if语句组合成一个?可能吗?如果是这样的话?
答案 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)) {}