Was macht diese Programmzeile?

Gast #511641
Lesenswert?
• ▲
▼
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
Gast #511652
Lesenswert?
• ▲
▼
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?
Gast #511721
Lesenswert?
• ▲
▼
"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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.