Switch anweisung



  • Also ich bin c++ anfänger und habe Folgendes Programm Geschrieben :

    #include <iostream.h>
    
    int main()
    
    {
        int blab = 1;
    	int antwort;
    
    		while(blab = 1)
    		{
    			cout << "1 = Programm A, 2 = Programm B, 3 = Ende" << endl;
    			cin >> antwort;
    			switch(antwort)
    			{
    			case  1     :    cout << "Programm A\n"; break;
    			case  2     :    cout << "Programm B\n"; break;
    			case  3     :    blab = 0; break;
    			default     :    cout << "Falsche Eingabe oder Gross geschrieben!\n"; break;
    			}
    
    		}
    
    return 0;
    
    }
    

    Die Schleife Funktioniert auch wunderbar, dass heisst wenn ich 1 eingebe dann sagt er Programm A und bei 2 auch Programm B nur wenn ich 3 eingeben dann weist er doch der Variablen den wert 0 zu. Nun sollte doch eigentlich die schleife das Testen und sehen "Aha is net 1 also die Funktionen in der Schleife nicht ausführen und weiter machen", aber das tut er nicht ! 😞 Er geht einfach wieder zu beginn der Schleife ! (Ich darf keine IF anweisung und auch keine break oder continue anweisung inerhalb der Schleife haben . Inerhalb der swicht-anweisung schon)

    Was mache ich falsch ?

    Vielen Dank schonmal im vorraus

    Und sry wenn es irgendwo in einer faq steht ... ich habge gesucht aber nichts gefunden.



  • H²O schrieb:

    while(blab = 1)
    

    ändern in

    while(blab == 1)
    

    Mit operator= wird eine Zuweisung gemacht, daher ist diese Bedingung immer true, da blab immer wieder 1 zugewiesen wird.



  • ARGH bin ich dumm

    Ich sollte mir das ab jetzt mal öfters genauer durchlesen ...

    Vielen Dank für die schnelle Antwort !



  • Warnungsstufe des Compilers erhöhen ist auch ein Tipp.
    Ach und:

    #include <iostream>
    using namespace std;
    

    statt

    #include <iostream.h>
    


  • H²O schrieb:

    ARGH bin ich dumm

    nein. das hat nichts mit dummheit zu tun. vielmehr hat es was damit zu tun, das viele anfänger den zuweisungs-operator (=) mit dem vergleichs-operator (==) verwechseln 😉

    schönen abend noch...


Anmelden zum Antworten