if..... und was dann?

Gast #50546
Lesenswert?

Mal wieder eine Frage an die C-Experten:

Folgendes Gebilde funktioniert:

float wert;
.
.
void vergleich();
{
if ( wert > 2000000 )
 {
 .
 .
 }
  else
   if ( wert > 200000 )
    {
    .
    .
    }
      else
       if ( wert > 20000  )
        {
        .
        .
        }
           {
           .
           .
           }
}

Das nun folgende funktioniert ebenfalls:

float wert;
.
.
{
if ( wert > 2000000 )
 {
 .
 .
 return;
 }
   if ( wert > 200000 )
    {
    .
    .
    return;
    }
       if ( wert > 20000  )
        {
        .
        .
        return;
        }
           {
           .
           .
           }
}

Meine Frage: Sind diese beiden Lösungen gleichwertig, oder gibt es
da Fallstricke?

Gruß  Tipper
Gast #50547
Lesenswert?

Die sind äquivalent.

Allerdings würde ich sie nicht so ungewöhnlich einrücken, sondern in
beiden Fällen ist es üblich, das so zu schreiben:

void
foo(void)
{
  ...
  if (wert > 200000) {
    ...
  } else if (wert > 20000) {
    ...
  } else if (wert > 2000) {
    ...
  } else {
    ...
  }
}

(Ggf. die öffnende Klammer auf eine neue Zeile, das ist
Geschmackssache.)

Sonst mußt Du irgendwann noch rechts am Bildschirm anbauen. ;-)
Gast #50548
Lesenswert?

Hallo Tipper

Der Profi C-Programmierer würde hier sagen: "Grundsätzlich sollte aus
einer C-Funktion nur ein einziges return heraus führen".
Im Bereich Mikrocontroller meine ich jedoch, dass man hier ein oder
beide Augen zudrücken sollte, wenn dadurch etliche Bytes von Code
gespart werden können.
Ansonsten ist der Lösungsansatz von Joerg sicherlich vorzuziehen.

Gruss
Christian

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren