switch case



  • So vielleicht?

    bool nochWasZuErledigen = false;
    
    do {
        switch(wert) {
            case 1:
                machWas();
                wert = 3;
                nochWasZuErledigen = true;
                break;
            case 2:
                machWasAnderes();
                nochWasZuErledigen = false;
                break;
            case 3:
                machNochMehr();
                nochWasZuErledigen = false;
                break;
            default:
                nochWasZuErledigen = false;
                break;
        }
    }while(nochWasZuErledigen);
    


  • Lach 🙂
    Das ist auch ne Lösung, aber ich finde meine in dem Fall besser, obwohls ein goto ist.
    Gruß



  • Entweder doch die Reihenfolge ändern (warum willst du das nicht?) oder den Code von case 3 in eine Funktion packen, die dann sowohl in case 1 als auch in case 3 aufgerufen wird.



  • Klar funktioniert goto. Aber es gibt viel bessere Lösungen wie das von Mizar!

    lg, freakC++



  • Laß Dich nicht veralbern. Goto ist hier bisher die beste Lösung.



  • Also die Reihenfolge will ich nicht ändern, weils
    eine Sache sit, die übersichtlich sein soll.
    Und die Numerrierung ist hier wichtig.
    Ich verwende normalerweise nie goto. Aber in diesem Fall würde ich es verwenden.
    Es spricht nichts dagegen soweit ich das sehe. Und um Goto garnicht zu verwenden bin ich zu wenig Rasist =).
    Den Funktionsaufruf würde ich mir auch gerne sparen.
    Für inline ist das was iche zu groß.
    Speziell würde mich hier interessieren was in diesem Fall gegen das goto spricht.
    Mich würde interessieren, ob der compiler draus kommen kann.
    Aber soweit ich das sehe, ist das hier nicht der fall.

    Ich finde es an dieser Stelle:

    a)übersichtlich
    b)stabiel
    und damit zweckdienlich.
    Gruß



  • 🙂
    Danke Volkard,
    Eine zweite kompetente Meinung außer meiner genügt mir an der Stelle *ggg*
    Dann werde ich es so machen.
    Gruß



  • Ich hätte auch am ehesten die Reihenfolge geändert, aber das schliesst du ja aus (so auch den Funktionsaufruf), dann spricht eigentlich nichts gegen ein goto.

    Gegen goto spricht im allgemeinen der unüberlegte Einsatz. Grundsätzlich sollten die Alarmglocken klingeln, wenn du ein goto machen willst, wenn du dir aber die Alternativen überlegst und die ausschliessen kannst, dann ist goto kein Problem.



  • Mizar schrieb:

    So vielleicht?

    bool nochWasZuErledigen = false;
    
    do {
        switch(wert) {
            case 1:
                machWas();
                wert = 3;
                nochWasZuErledigen = true;
                break;
            case 2:
                machWasAnderes();
                nochWasZuErledigen = false;
                break;
            case 3:
                machNochMehr();
                nochWasZuErledigen = false;
                break;
            default:
                nochWasZuErledigen = false;
                break;
        }
    }while(nochWasZuErledigen);
    

    Wenn der fraglich Code sich so aufspalten lässt, wie du das hier gemacht hast, dann wäre folgendes doch viel sinnvoller:

    switch(wert) {
            case 1:
                machWas();
                break;
            case 2:
                machWasAnderes();
                break;
            case 3:
                machWas(); // TADAA!
                machNochMehr();
                break;
        }
    


  • Registrierter Troll schrieb:

    Wenn der fraglich Code sich so aufspalten lässt, wie du das hier gemacht hast, dann wäre folgendes doch viel sinnvoller:

    switch(wert) {
            case 1:
                machWas();
                break;
            case 2:
                machWasAnderes();
                break;
            case 3:
                machWas(); // TADAA!
                machNochMehr();
                break;
        }
    

    Ja, mir ist nach diesem Beitrag hier:

    wx++ schrieb:

    Entweder doch die Reihenfolge ändern (warum willst du das nicht?) oder den Code von case 3 in eine Funktion packen, die dann sowohl in case 1 als auch in case 3 aufgerufen wird.

    schon klar geworden das ich da Unfug verzapft habe 😃



  • Mizar schrieb:

    Ja, mir ist nach diesem Beitrag hier:

    wx++ schrieb:

    Entweder doch die Reihenfolge ändern (warum willst du das nicht?) oder den Code von case 3 in eine Funktion packen, die dann sowohl in case 1 als auch in case 3 aufgerufen wird.

    schon klar geworden das ich da Unfug verzapft habe 😃

    Ups, den hab ich gar nicht gesehen. In dem Fall hab ich nichts gesagt.



  • AlexXXx hat gesagt, dass er den Aufruf sparen möchte.

    Ob das Sinn macht ist eine andere Frage, welche er in einm neuen Thread (oder halt auch hier) stellen kann. Aber wenn er sicher ist, dass er den Funktionsaufruf nicht möchte, dann müssen wir das atm halt so annehmen.

    Ich gehe mal davon aus, dass der Funktionsaufruf erwiesenermassen nicht gebrauchen kann. Ansonsten müssten wir hier nicht über Sinn von goto sprechen, sondern darum, warum du keine Funktion haben willst.


Anmelden zum Antworten