Kein ESC auf Konsole?



  • Hi,
    Dumme Frage, aber warum wird bei diesem Code niemals der Teil ausgeführt, wenn ESC gedrückt wird?

    bool done = false;
        char myKey;
        while (done == false)
        {
            myKey = getch();
            if (myKey <= 0) //Wenn Sondertaste
            {
                myKey = getch();
                switch (myKey)
                {
                    case 72:
                            std :: cout << "Pfeil Hoch!" << std :: endl;
                            break;
                    case 80:
                            std :: cout << "Pfeil Unten!" << std :: endl;
                            break;
                }
            }
            else
            if (myKey == 27) done == true;
        }
        std :: cout << "Programm is ENDE :D";
        getch();
    

    Liegt das an der Char<>Integer umwandlung? Eigentlich ja nicht, da die case- Anweisung ja geht..



  • OK, ...hab den Fehler und küre mich mal ganz dreißt zum dümmsten Esel der C++Welt...
    In Zeile 20 o.O



  • Dabei passiert es meistens umgekehrt 😉

    BTW: Welchen Compiler verwendest du, dass er das nicht als Warnung ausgibt?

    MfG SideWinder



  • CodeBlocks mir MinGW
    Aber wär das nicht eigentlich dumm dabei ne Warnung auszugeben? Dann wäre ja jede if-Anweisung etc... eine potentielle Gefahr



  • Pille456 schrieb:

    CodeBlocks mir MinGW
    Aber wär das nicht eigentlich dumm dabei ne Warnung auszugeben? Dann wäre ja jede if-Anweisung etc... eine potentielle Gefahr

    Nicht das if ist das Problem. Ein "a == b" ohne Zuweisung oder Verwendung als Bedingung klingt doch spanisch 😉

    Ordentlichen Compiler findest du auf http://msdn.microsoft.com 👍 Dann sieht das auch so aus:

    Kompilieren...
    main.cpp
    D:\..\main.cpp(16) : warning C4553: '==': Operator hat keine Auswirkungen; ist '=' beabsichtigt?
    

    und du ersparst dir viel Ärger.

    MfG SideWinder


Anmelden zum Antworten