antred
Lt. Commander
- Registriert
- Juni 2010
- Beiträge
- 1.288
Amarok2 schrieb:ja ich brauch goto nur für 2 sachen... das sollte ja dann noch lesbar sein
wie geht das, wenn ich 2 verschachtelte while abfragen hab, das ich da aus beiden rausspringe?
beispiel:
Code:while(1) { while(1) { if(bedingung == true) { goto label; } } } label:
also wie schreib ich das ohne goto?
Ganz einfach, du packst das ganze Schleifenkonstrukt in eine neue Funktion und springst dann einfach mit einem simplen return aus der ganzen Funktion raus. Nehmen wir mal an, dein jetziger Code sieht so aus:
Code:
void blabla()
{
// ...
// ...
while(1)
{
while(1)
{
if(bedingung == true)
{
goto label;
}
}
}
label:
// weiterer Code hier
// ...
// ...
}
Mein Vorschlag wäre stattdessen:
Code:
void schleifenFunktion( /* alle benötigten Argumente hier ... */ )
{
while(1)
{
while(1)
{
if(bedingung == true)
{
//goto label; <-- Pfui! ;P
return; // Verlasse Funktion und damit auch beide Schleifen.
}
}
}
}
void blabla()
{
// ...
// ...
schleifenFunktion( /* Übergabeparameter */ );
//label: <-- Brauchen wir jetzt nicht mehr.
// weiterer Code hier
// ...
// ...
}
Ergänzung ()
dammi schrieb:Entweder mit Break oder Exit. ist so ziemlich gleich in allen Sprachen.
Ein exit wäre wohl ein bißchen übertrieben, nur um aus einer Schleife rauszuspringen, oder?