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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren