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
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. ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.