2013-07-26 76 views
-1

您好我有這兩個單獨的IF語句,如果這樣放置;如何將兩個if語句合併爲一個

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

如何將這兩個if語句合併爲一個?可能嗎?如果是的話如何?

+5

任何學習資源都應該在if語句後很快處理。 – chris

+0

你是什麼意思「最終沒有效果」? – amdn

+0

只是出於好奇,第一個陳述會有什麼影響?由於缺少{},它只會影響第二個if語句,對嗎?不是the_thing_to_do? – PunDefeated

回答

4

使用operator&&如果你想他們都被滿足(邏輯AND)

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

operator||如果你想只是一個被滿足(邏輯OR)

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

如果你想這兩個陳述是真實的使用邏輯與

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

如果你想要該聲明是真實的使用邏輯或

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

上述運營商兩者都是logical operators

+0

非常感謝 – user2621004

+2

邏輯運算符也有幾個SO線程:http://stackoverflow.com/questions/12332316/logical-operators-in-c –

+0

+1爲鏈接 –

4

這取決於如果你想既要評價爲真...

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

...或至少一個...

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

區別在於邏輯AND(& &)或邏輯OR(||)

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; 
} 
+0

我真的很喜歡三元運算符,但' (x?true:false)'...?哎呀! ;-) –

+0

是的,我有點同意,但其他人已經提出了&&版本,我想我只是向他介紹這個概念,因爲他正在尋求一種方法來做到這一點。 – bjackfly

1

只是一個aternative如果它是有意義的(有時)。

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

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