2013-06-07 4 views
0

세계!else if 문

저는 현재 스스로 자기 C++을 가르치고 있습니다. 나는 교장을 읽으며 C++을 사용하여 연습하고 있고, 내가 예상하지 못한 프로그램의 결과에 대해 궁금한 연습 문제 중 하나를위한 프로그램을 작성하는 동안. 이것이 왜 아무도 설명 할 수 있다면 그것은 좋은 것입니다 아래

소스 코드 :

#include<iostream> 

using namespace std; 

int main() 
{ 
    double val1 = 0; 
    double val2 = 0; 

    cout << "Enter two floating point values: "; 
    cin >> val1 >> val2; 

    cout << val1 + val2 << '\n' 
     << val1 * val2 << '\n' 
     << val1/val2 << '\n'; 

    if(val1 > val2) 
    { 
     cout << val1 << " greater \n"; 
     cout << val2 << " lesser \n"; 
    } 

    if(val1 == val2) 
    { 
     cout << val1 << " equals other floating point value \n"; 
     cout << val2 << "equals other floating point value \n"; 
    } 

    else 
    { 
     cout << val2 << " greater \n"; 
     cout << val1 << " lesser \n"; 
    } 

    system("PAUSE"); 
} 

나는 6.9 및 5.4과 같은를 입력, 그것은 나에게이 출력을 제공합니다

6.9 이상 5.3 더 적은

5.3 6.9

은 내가 다른 사람을 변경하여 문제를 해결 한 적은 문을 if 문으로 대체 할 수 있지만 else 문을 사용할 때 왜이 출력이되는지 이유를 말해 줄 수 있습니다. 감사! 코드 아래

답변

1

:

if(val1 == val2) { 
    cout << val1 << " equals other floating point value \n"; 
    cout << val2 << "equals other floating point value \n"; 
} 

else { 
    cout << val2 << " greater \n"; 
    cout << val1 << " lesser \n"; 
} 

6.9 != 5.4, 그것은 "else" 부분에 가서 두 번째 출력 당신에게 다음과 같아야합니다

6

코드를 줄 수 있도록 :

if(val1 > val2) 
{ 
    cout << val1 << " greater \n"; 
    cout << val2 << " lesser \n"; 
} 

else if(val1 == val2) 
{ //^^you missed this else 

    cout << val1 << " equals other floating point value \n"; 
    cout << val2 << "equals other floating point value \n"; 
} 

else 
{ 
    cout << val2 << " greater \n"; 
    cout << val1 << " lesser \n"; 
} 

논리는 매우이다 그걸 놓치면 분명히 else. 특히, 첫 번째 if 블록을 실행합니다. 그런 다음 else이 없으면 else 블록으로 이동하십시오. val1val2이 동일하지 않는

1

당신의 else에만 두 번째 if에 부착 그래서 당신의 코드는 else 블록으로 이동합니다.

당신은뿐만 아니라 두 번째 if 전에 사용해야 당신이 else을 사용하여 원하는 동작을 얻으려면 : 그래서 val2만큼이> val1과 조건이 매번 작업 할 경우는 다른 두 번째 일하고있다

if(val1 > val2) 
{ 
    cout << val1 << " greater \n"; 
    cout << val2 << " lesser \n"; 
} 

else if(val1 == val2) 
{ 
    cout << val1 << " equals other floating point value \n"; 
    cout << val2 << "equals other floating point value \n"; 
} 

else 
{ 
    cout << val2 << " greater \n"; 
    cout << val1 << " lesser \n"; 
} 
+0

모든 답장을 보내 주셔서 감사합니다.이제 이해가된다. 방금 방구했다. – user2461800

0

을 == 조건은 거짓입니다. 거기에는 여러 가지 해결책이있을 수 있습니다.

0

else 문은 가장 가까운 if 문과 연관됩니다. 예를 들어 작성했습니다.

if(val1>val2) 
{ 
    // do something 
} 
if(val1==val2) 
{ 
    // do something 
} 
else 
{ 
    // do something 
} 

여기에 'else'문은 가장 가까운 if (val1 == val2)와 연관되어 있습니다. 'val1> val2'조건이 테스트되는 경우 먼저 val1 = 10 & val2 = 9 이라고 말하십시오. 그것은 true (10> 9가 true)이고 then 조건 'val1 == val2'가 false 일 경우 두 번째 (10 == 9가 거짓), 이제는 'else'가 가장 가깝다 'if is is 그릇된. 대답이 '예'라면 '그 밖의 진술'을 수행하십시오. 그래서 평범한 영어로 생각하십시오. 친구에게 ELSE 조건을 부여하면 친구는 IF와 관련된 상태가 무엇인지 물어야합니다. 그래서 당신의 잘못은 'else'를 'if (val1 < val2)'로 대체하고 else를 (val1 < val2) '&과 같이 바꿀 수 있습니다.