Forum: Compiler & IDEs Wenn <Rückgabewert> dann <mach was damit>


von Gast (Gast)


Lesenswert?

Manche Funktionen funktionieren ja nur einmal (z.B. Puffer auslesen), 
aber nach der Prüfung will man ggf. was mit dem Rückgabewert anfangen.

Gibt's da ne schönere Methode als:

t = f();
if (t)
{...}

von Robert (Gast)


Lesenswert?

Ja:

if(f())
{...}

von Peter (Gast)


Lesenswert?

Das kommt darauf an, wie Du den Rückgabewert weiter auswerten möchtest!
1
t = f();
2
if (t) {
3
}
Die Alternative von Robert bietet sich nur an, wenn Du den Wert genau 
einmal überprüfen möchtest.

Wirf vielleicht mal einen Blick auf die swtich/case-Anweisung:
1
switch (f()) {
2
  case 1: ...;break; //wenn f()==1 ...
3
  case 2: ...;break; //wenn f()==2 ...
4
  default: ...;  //ansonsten ...
5
}

Generell ist die Lösung, den Rückgabewert in einer Variable zu speichern 
aber nicht schlecht.
Gruß, Peter

von Peter (Gast)


Lesenswert?

Ups, irgendwie habe ich Deinen Beispielcode mit in meinen Post 
übernommen, der sollte natürlich nicht mehr drinstehen :)

von so? (Gast)


Lesenswert?

if(t = f()) {
  print(t);
}

von Stefan C. (jaecko)


Lesenswert?

1
if(t = f()) {
2
  print(t);
3
}

...wird immer wahr sein.
Eher:
1
if(t == f()) {
2
  print(t);
3
}

von Sven P. (Gast)


Lesenswert?

Stefan C. schrieb:
>
1
> if(t = f()) {
2
>   print(t);
3
> }
4
>
>
> ...wird immer wahr sein.
Nein, wird dann wahr sein, wenn der Rückgabewert von f() wahr ist.

> Eher:
>
1
> if(t == f()) {
2
>   print(t);
3
> }
4
>
Nein, wird nur dann wahr sein, wenn t gleich dem Rückgabewert von f() 
ist.

von der mechatroniker (Gast)


Lesenswert?

Ich schreib in solchen Fällen gerne explizit
1
if ((t = f()) != 0) {
2
   mach_was_mit(t);
3
}

Dann weiß ich auch noch, wenn ich ein halbes Jahr später im Code 
irgendeinen Fehler suche, dass das '=' statt '==' im 'if' Absicht war.

von so? (Gast)


Lesenswert?

Jo, aber ich wollts knackig halten.
Lesbar ist was anderes, da hast du schon Recht.

von Gast (Gast)


Lesenswert?

Perfekt, das sieht doch schon besser aus. Danke!

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
Noch kein Account? Hier anmelden.