2016-07-31 31 views
-1

Ich habe ein Programm in C++, die für jede Ganzzahleingabe fragen. Das Programm stürzt nach nur 2 Iterationen ab. Der Code ist unten:nur eine Anweisung unter if-Anweisung ausgeführt wird

#include<iostream> 

int main() 
{ 
    int user_choice; 
    std::cout <<"Please enter any number other than five: "; 
    std::cin >> user_choice; 

    while(user_choice != 5) 
    { 
     std::cout <<"Please enter any number other than five: "; 
     std::cin >> user_choice; 
     if(user_choice == 5) 
      std::cout << "Program Crash"; 
      break; 
    } 
    std::cout << "I told you not to enter 5!"; 
    return 0; 
} 

ich dann versucht, dies zu tun:

if(user_choice == 5) 
    std::cout << "Program Crash"; 
    //std::cout << "Shutting Down"; 

Welche gearbeitet. Warum führt das Auskommentieren der zweiten Zeile dazu, dass das Programm ordnungsgemäß ausgeführt wird?

+2

'if (Bedingung) {Anweisung1; Aussage2; } ' – LogicStuff

+0

@LogicStuff Könnten Sie bitte erklären Sie ein wenig mehr Kommentar –

+1

Es gibt mehr zu Ihrem Code, wie, warum vergleichen Sie' user_choice' mit '5' literal, wenn Sie tun sollten' user_choice == right_answer'? Warum haben Sie das Gefühl, 'right_answer' zu' user_choice' zuzuweisen, wenn sie bereits gleich sind? Du hast auch '5' in die Ausgabenachrichten geschrieben ... – LogicStuff

Antwort

2

Dieser Code:

if (counter == 10) 
    std::cout << "Wow you still have not entered 5. You win!"; 
    user_choice = right_answer; 

ist Gl uivalent zu:

if (counter == 10) 
{ 
    std::cout << "Wow you still have not entered 5. You win!"; 
} 
user_choice = right_answer; 

Ihr Problem deutlich wird, ist user_choice = right_answer nicht nur, wenn counter == 10 ausgeführt. So verschieben Sie es in den if() { ... } Block:

if (counter == 10) 
{ 
    std::cout << "Wow you still have not entered 5. You win!"; 
    user_choice = right_answer; 
} 
+2

@ Mr.Python Definitiv nicht, wenn Sie nicht bereits, erhalten Sie ein C++ Buch. Sie können nicht in C++ springen und Konstrukte aus anderen Sprachen anwenden ... Sie bekommen solche Probleme. – user2296177

+0

@ Mr.Python Ich empfehle "scope" dort nachzuschlagen. – user2296177

+1

Ja, es ist erstaunlich, wie effektiv es ist, die Sprache zu lernen. –

1

C++ berücksichtigt Einrückung nicht; so, wenn Sie schreiben:

if (counter == 10) 
    std::cout << "Wow you still have not entered 5. You win!"; 
    user_choice = right_answer; 

der Compiler sieht:

if (counter == 10) 
    std::cout << "Wow you still have not entered 5. You win!"; 
user_choice = right_answer; 

beide Aussagen setzen unter der if, müssen Sie Klammern:

if (counter == 10) { 
    std::cout << "Wow you still have not entered 5. You win!"; 
    user_choice = right_answer; 
}