Forum: Mikrocontroller und Digitale Elektronik if..... und was dann?


von Tipper (Gast)


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

von Joerg Wunsch (Gast)


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. ;-)

von Christian Schifferle (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.