Problem mit Übungsaufgabe enum/if



  • Guten Tag,
    ich habe ein Verständnisproblem, bei dem ihr mir hoffentlich weiter helfen könnt. 🙂
    Gegeben ist folgender Code.

    int main()
    {
    	int h = 2;
    	enum {ja, nein, vielleicht, weiss_nicht};
    	if (ja)
    		h += vielleicht;
    	if (nein)
    		h += weiss_nicht;
    	cout << h << endl;
    
    	system("pause");
        return 0;
    }
    

    Gefragt ist nach dem Wert der ausgegeben wird. (Prüfungsaufgabe, ohne PC)
    Die Lösung ist 5, h=2 + weiss_nicht=3.

    Was mich irritiert ist zum einem, das der Befehl "enum" keine Bezeichnung hat und das es in den "if" Anweisungen keine Abfrage zu geben scheint. (h > 6 o.ä.)

    Trotzdem läuft das Programm bis zu der "if (nein)" Anweisung und führt diese aus.
    Aber warum, wird "if(nein)" ausgeführt und nicht "if(ja)" und warum wird "if" überhaupt ausgeführt ohne Abfrage?

    Viele Grüße
    Tim0



  • Naja, in C++ solltest du zunächst einmal lieber "enum class" statt "enum" verwenden, dann geht der Code unten so nicht.

    enum ohne class definiert im Prinzip nur Konstanten, die (wenn nicht anders angegeben) bei 0 anfangen und dann jeweils 1 mehr werden. D.h. in deinem Fall ja==0, nein==1, vielleicht==2 und weiss_nicht==3.

    Du hast also (mit ersetzten Konstanten):

    if (0)
            h += 2;
        if (1)
            h += 3;
    

    Da 0 false ist und 1 true, wird 3 zu h addiert.



  • Vielen Dank 🙂


Anmelden zum Antworten