Hallo, ich kenne eine Return Anweisung als Wertübergabe an die Funktion, vielleicht wird in der Return Anweisung noch eine Berechnung durchgeführt. Aber den unteren Return Aufruf verstehe ich nicht, da es wie eine Abfrage aussieht. return ((spi_sr & 0x02) == 0); Ich davon aus, dass mir jemand weiter helfen kann. Gruß Ernst
Ernst schrieb: > Hallo, > > ich kenne eine Return Anweisung als Wertübergabe an die Funktion, da bist Du der Einzige ... > Aber den unteren Return Aufruf verstehe ich nicht, da es wie eine > Abfrage aussieht. > > return ((spi_sr & 0x02) == 0); Es wird der Ausdruck spi_sr & 0x02 berechnet. Ist der == 0 ist der gesamte Ausdruck TRUE, anderenfalls FALSE. Dies wird zurückgegeben.
Ja, das ist eine Abfrage. Überlege mal, was eine Abfrage (Hier ein Vergleich) für ein Ergebniss haben kann. ;)
Dieses return gibt einfach nur true oder false zurück, je nachdem ob der Ausdruck wahr oder falsch ist. Allerdings ist es einfach an der ersten Zeile der Prozedur zu erkennen, die du hier nicht mitgepostet hast. Die wird vermutlich so aussehen:
1 | boolean MeineUnterroutine() { |
2 | |
3 | return ((spi_sr & 0x02) == 0); |
4 | }
|
Ernst schrieb: > ich kenne eine Return Anweisung als Wertübergabe an die Funktion, He? Meinst du diese Pascal Nummer, wo der Aufrufer die Daten aufn Stack schiebt, und die Unterroutine das auch macht?
Ich hätte es besser beschreiben müssen. Mit Return wird der ausführenden Funktion ein Parameter übergeben. Die gesamte Prozedur sieht so aus. Keine Boolean Anfrage, sondern nur ein Char-Typ.
1 | static unsigned char SPI(void) |
2 | {
|
3 | unsigned char spi_sr = SPISTAT; |
4 | |
5 | return ((spi_sr & 0x02) == 0); |
6 | }
|
Ernst
Nun ja, da C eigentlich keine boolean-Typ kennt, hat der unbekannte Autor dieses Codes dafür einen unsigned char genommen. Was nichts daran ändert, daß entweder eine 0, falls der Vergleich unwahr ist, oder irgend etwas anderes, falls der Vergleich wahr ist, zurückgegeben wird. Oliver
Ernst schrieb: > Die gesamte Prozedur sieht so aus. Keine Boolean Anfrage, sondern nur > ein Char-Typ. An dieser Stelle steht der unsigned char für einen 'kleinen Integer ohne Vorzeichen'. Nicht überall, wo das Schlüsselwort 'char' vorkommt, hat man es mit Textverarbeitung zu tun. Manchmal benutzt man einen char auch einfach nur als 'Variable die wenig Speicherplatz verbraucht und abgesehen davon auch einfach nur Zahlen enthält'. zb die Zahlen 0 bzw. 1, wie sie ein Vergleich erzeugt.
Ein Return Wert (darum heißt der auch so) der aufgerufenen Funktion gibt etwas ZURÜCK. Nämlich der aufrufenden Funktion einen definierten "exit"Status. Welche Eingangsparameter dei aufgerufene Funktion hat (in Form von übergebenen Variablen, Pointern, globalen Variablen etc) hat damit reineweg garnix zu tun. Der Return-Wert der aufgerufenen Funktion (Datentyp: integer) dient der aufrufenden Funktion dazu, schnell&einfach einen Statuswert über den Erfolg der durchgeführten Funktion mitzuteilen
Oliver S. schrieb: > Nun ja, da C eigentlich keine boolean-Typ kennt, Doch, schon seit Ende letzten Jahrtausends. Daß es um C zu gehen scheint, mußte man übrigens auch erst mal raten.
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.