Forum: Mikrocontroller und Digitale Elektronik C: If-Frage mit boolschen Output


von Helmut Andere Farbe (Gast)


Lesenswert?

1
  if(t_wt_austritt > t_ladepumpe_ein) tof_ladepumpe.IN = 1;
2
  else tof_ladepumpe.IN = 0;

Kann man das auch mit einem schönen Einzeiler machen?

tof_ladepumpe.IN = (Abfrage, Wert Ja, Wert Nein);

von Karl M. (Gast)


Lesenswert?

Helmut Andere Farbe schrieb:
> if(t_wt_austritt > t_ladepumpe_ein) tof_ladepumpe.IN = 1;
>   else tof_ladepumpe.IN = 0;
> Kann man das auch mit einem schönen Einzeiler machen?
>
> tof_ladepumpe.IN = (Abfrage, Wert Ja, Wert Nein);

Ja,

<var> = (<bedingung>) ? (<expr-true>) :  (<expr-false>);

Siehe: 
https://de.wikibooks.org/wiki/C-Programmierung:_Ausdr%C3%BCcke_und_Operatoren#Bedingung_?:

von Ewald E. (Gast)


Lesenswert?

Das nennt sich 'ternary operator':
https://en.wikipedia.org/wiki/%3F:#C

von Joe F. (easylife)


Lesenswert?

Helmut Andere Farbe schrieb:
> if(t_wt_austritt > t_ladepumpe_ein) tof_ladepumpe.IN = 1;
>   else tof_ladepumpe.IN = 0;
> Kann man das auch mit einem schönen Einzeiler machen?


tof_ladepumpe.IN = (t_wt_austritt > t_ladepumpe_ein);

von Karl M. (Gast)


Lesenswert?

Hi Joe F. schrieb:
> tof_ladepumpe.IN = (t_wt_austritt > t_ladepumpe_ein);

Da wird er nicht wissen, warum das funktioniert.

Er wird nicht wissen wie ein True oder False binär kodiert wird.

von Joe F. (easylife)


Lesenswert?

Karl M. schrieb:
> Da wird er nicht wissen, warum das funktioniert.

Warum denkt er das? Jener wird schon verstehen.

von GEKU (Gast)


Lesenswert?

Helmut Andere Farbe schrieb:
> if(t_wt_austritt > t_ladepumpe_ein) tof_ladepumpe.IN = 1;
>   else tof_ladepumpe.IN = 0;

Ja  :
1
tof_ladepumpe.IN = (t_wt_Austritt > t_ladungspumpe_ein);

von Karl M. (Gast)


Lesenswert?

GEKU schrieb:
> Helmut Andere Farbe schrieb:
>> if(t_wt_austritt > t_ladepumpe_ein) tof_ladepumpe.IN = 1;
>>   else tof_ladepumpe.IN = 0;
>
> Ja  :
> tof_ladepumpe.IN = (t_wt_Austritt > t_ladungspumpe_ein);

Nein, C ist Case Sensitive, also auf die Schreibweise achten.
1
if(t_wt_austritt > t_ladepumpe_ein)
2
    tof_ladepumpe.IN = 1;
3
  else tof_ladepumpe.IN = 0;

von MaWin (Gast)


Lesenswert?

Warum tut man sich in C so schwer, die richtigen Datentypen zu nutzen. 
Auch wenn sie nur pseudos sind.

Da nach Boolean Gefragt wurde:
tof_ladepumpe.IN = t_wt_austritt > t_ladepumpe_ein ? TRUE : FALSE;

von leo (Gast)


Lesenswert?

MaWin schrieb:
> nur pseudos

Genau. Warum sollte ich
1
if (wahr == TRUE) ...
schreiben, wenn
1
if (wahr) ...
ident aber kuerzer ist.

leo

von MaWin (Gast)


Lesenswert?

MaWin schrieb:
> Da nach Boolean Gefragt wurde:
> tof_ladepumpe.IN = t_wt_austritt > t_ladepumpe_ein ? TRUE : FALSE;

Mal wieder ein Beitrag des Psychopathen, der seinen Namen nicht kennt,
und stattdessen MaWin ins Namensfeld schreibt.

Der Vergleichsoperator gibt bereits ein _Bool zurück.
Deshalb ist der If-Operator redundant.

tof_ladepumpe.IN = t_wt_austritt > t_ladepumpe_ein;

von Yalu X. (yalu) (Moderator)


Lesenswert?

MaWin schrieb:
> Der Vergleichsoperator gibt bereits ein _Bool zurück.

Nein, sondern ein int mit dem Wert 0 oder 1. Das ändert aber nichts
daran, dass das if-Konstrukt weggelassen werden kann.

von ... (Gast)


Lesenswert?

aha.. der if-operator. ja ja. hmmh.

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.