Return Anweisung

Gast #2902473
Lesenswert?
• ▲
▼
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
(Firma: JDCC) #2902477
Lesenswert?
• ▲
▼
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.
(Firma: matzetronics) #2902482
Lesenswert?
• ▲
▼
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?
Gast #2902498
Lesenswert?
• ▲
▼
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
#2902551
Lesenswert?
• ▲
▼
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
#2902559
Lesenswert?
• ▲
▼
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.
#2902561
Lesenswert?
• ▲
▼
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.