mikrocontroller.net

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


Autor: Tipper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. ;-)

Autor: Christian Schifferle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.