2013-07-26 6 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&& 당신은 당신이 하나가 충족되어야합니다 (논리 OR) 경우 둘 다

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

당신이 원하는 경우

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

또는 operator||을 (논리 AND)을 충족 할 경우 두 진술 모두 논리 AND를 사용하십시오.

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

... 당신이 모두 true로 평가하려면 상황에 따라 다르다 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) 

두 ... 또는 적어도 하나 ...

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)'...? Yikes! ;-) –

+0

그래, 나는 약간 동의한다. 그러나 다른 사람들은 이미 && 버전을 제안했고 나는 한 줄로 그것을 할 수있는 방법을 묻기 때문에 그를 개념에 소개 할 것이라고 생각했다. – bjackfly

1

그냥 aternative을 사용할 수 있습니다 사용하지 않으려면 (때로는).

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

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