嗨,当这样放置时,我有这两个单独的if
陈述;
if (powerlevel <= 0) // <--- ends up having no effect
if (src.health <= 0)
the_thing_to_do();
如何将这两个 if 语句合并为一个?可能吗?如果有怎么办?
嗨,当这样放置时,我有这两个单独的if
陈述;
if (powerlevel <= 0) // <--- ends up having no effect
if (src.health <= 0)
the_thing_to_do();
如何将这两个 if 语句合并为一个?可能吗?如果有怎么办?
如果您希望两个语句都为真,请使用逻辑 AND
if(powerlevel <= 0 && src.health <= 0)
如果您希望其中任何一个语句为真,请使用逻辑 OR
if(powerlevel <= 0 || src.health <= 0)
上述两个运算符都是逻辑运算符
operator&&
如果您希望同时满足这两个条件,请使用(逻辑与)
if(powerlevel <= 0 && src.health <= 0) { .. }
或者operator||
如果您只想满足一个(逻辑或)
if(powerlevel <= 0 || src.health <= 0) { .. }
这取决于您是否希望两者都评估为真......
if ((powerlevel <= 0) && (src.health <= 0)) {
// do stuff
}
……或者至少一个……
if ((powerlevel <= 0) || (src.health <= 0)) {
// do stuff
}
区别在于逻辑与 (&&) 或逻辑或 (||)
如果它是有意义的(有时)只是一个替代品。
Both true:
if (!(src.health > 0 || powerlevel > 0)) {}
at least one is true:
if (!(src.health > 0 && powerlevel > 0)) {}
或者,如果您不想使用 &&,您可以使用三元运算符
#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;
}