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.