Hallo an alle! Hab da mal eine Frage: Ich hab folgende Programmzeile in einem Programm gefunden: rByte += DIN ? mask : 0; Es hat mit A/D-Wandler zu tun, man vergleicht irgendwie das DIN (Data-In) mit einer Maske und dementsprechend wird dann das rByte gesetzt oder so irgendwie. Kann mir jemand erklären, wie das genau funktioniert? Danke schonmal für die Antworten. lg Hans
Ternärer ?:-Operator Als Einschub soll hier der ternäre Operator ?: behandelt werden. Dieser kann dazu dienen, innerhalb von Ausdrücken Teilausdrücke bedingt auszuwerten. inline int abs(int number) { // compute absolute value return number > 0 ? number : -number; } Ist der vor dem Ausrufezeichen stehende Ausdruck wahr, so wird der Teilausdruck vor dem Doppelpunkt, sonst derjenige nach dem Doppelpunkt ausgewertet. Der resultierende Typ der beiden alternativen Ausdrücke muß gleich sein. Aufgrund der geringen Priorität dieses Operators und zur Verdeutlichung der Zusammengehörigkeit der Teilausdrücke sollte man sich angewöhnen, großzügig Klammern zu setzen. int i1 = 3 > 4 ? 0 : 1; // i1 is 1 int i1_3 = 3 * ( 3 > 4 ? 0 : 1 ); // i1_3 is 3 int i2_3 = 3 * 3 > 4 ? 0 : 1; // i2_3 is 0 Welches Ausrufezeichen?
>Welches Ausrufezeichen?
Da kennt sich scheinbar jemand nicht mit den Satz(ende)-Zeichen aus.
Es sollte in dem Text wohl eher "...Fragezeichen..." heissen...
Im K&R ist das aber richtig beschrieben (AFIAR sogar in der 1. deutschen Auflage...)
> Da kennt sich scheinbar jemand nicht mit den Satz(ende)-Zeichen aus.
Und das seit 1998 LOL
Heißt das, wenn DIN 1 ist, wird dann die Maske ausgewertet und sonst wird 0 gesetzt?
"Heißt das, wenn DIN 1 ist, wird dann die Maske ausgewertet und sonst wird 0 gesetzt?" Nicht ganz. Man könnte das auch so schreiben:
1 | if (DIN) rbyte+=mask else rbyte +=0; |
Also wird mask zu rbyte addiert, wenn DIN nicht Null ist. Oliver
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.