Bedeutung von " |= "

Gast #3393713
Lesenswert?
• ▲
▼
|= bedeutet oder gleich

Damit werden Bits in irgendwelchen Registern gesetzt um z.B. einen ADC 
des µCs zu aktivieren

adc_en_reg = 0x0001; // ADC 1 ist aktiviert

adc_en_reg |= 0x0002; // ADC 2 wird auch aktiviert

-> jetzt steht im Reg 0x0003 drin, da alle Bits geodert wurden.
Gast #3393716
Lesenswert?
• ▲
▼
Also kann ich das so verstehen:
Der linke und rechte Wert von " |= " wird verknüpft und wird dann wieder 
in die Variable geschrieben wie im folgenden Beispiel?

Bsp.:
011010010
010110001

011110011
Moderator #3393770
Lesenswert?
• ▲
▼
Udo Schmitt schrieb:
> Und kamen noch daher als man noch keine interaktive IDE mit
> Autovervollständigung hatte sondern noch Lochkarten stanzen musste.

Es ist auch im Zeitalter von interaktiven IDEs sinnvoll, da man statt
1
arrayname[indexname + offsetname] = arrayname[indexname + offsetname] + 2;

einfach
1
arrayname[indexname + offsetname] += 2;

schreiben kann, was deutlich besser lesbar ist.
#3393878
Lesenswert?
• ▲
▼
Interessant:

In den Anfangszeiten, als C noch hauptsächlich in den Bell Labs 
gesprochen wurde und sonst praktisch nirgends, sah die Operation anders 
aus.

Anstelle von
1
   a op= b;

schrieb man
1
  a =op b;

Ritchie fand das ursprünglich schöner, da das = auf der Seite stand, auf 
der zugewiesen wurde (also beim a), während die Operation auf der Seite 
stand, an der das Argument für die Operation angegeben wurde.
Man schrieb also
1
  a =+ 5;
oder
1
  var =* 8;

aber damit gab es ein 'Problem'.
Es gab einen Bedeutungs-Unterschied zwischen
1
  a =- 2;
und
1
  a = -2;
und dieser Bedeutungs-Unterschied wurde lediglich durch die Position des 
Leerzeichens hervorgerufen.
Es war nicht missverständlich, denn in den C-Regeln war auch ganz klar 
definiert, wie das zu lesen ist, die Regeln regelten auch ganz klar, wie
1
  var=-2;
zu interpretieren ist. Aber in der Praxis erwies sich das als zu 
fehleranfällig, so dass die Kurzschreibweise umgedreht wurde und aus =op 
die auch heute noch benutzte Form op= wurde.
Ein ähnliches syntaktisches "Problem" existiert auch heute noch.
1
  b+ +2
und
1
  b++2
sind 2 verschiedene 'Dinge' (ok das eine ist ein Syntax Error). Jedoch 
ist dieses Problem weitaus weniger problematisch als die Sache mit den 
=op Operationen.
Gast #3394038
Lesenswert?
• ▲
▼
Was geht schneller -einen (logischen) Fehler in einem Quelltext, der
einer Art von maschinellem Steno entspricht zu finden, oder eine
Programmiersprache zu benutzen, die solche Fehler gar nicht zuläßt?

MfG Paul
Moderator #3394054
Lesenswert?
• ▲
▼
Paul Baumann schrieb:
> Was geht schneller -einen (logischen) Fehler in einem Quelltext, der
> einer Art von maschinellem Steno entspricht zu finden, oder eine
> Programmiersprache zu benutzen, die solche Fehler gar nicht zuläßt?

Nach der Programmiersprache, die keine logischen Fehler zulässt, sucht
man deutlich länger (wenn nicht sogar ewig) als nach dem Fehler in einem
Stenosprachenprogramm ;-)

Und die wenigen Sprachen, die dem hehren Ziel, logische Fehler schon
beim Kompilieren aufzudecken, zumindest schon etwas näher gekommen
sind, gelten als Exoten und werden von den meisten nicht gemocht.
Gast #5793155
Lesenswert?
• ▲
▼
An sich steht hier eine einfache Frage zum Thema C-Code.
Das Forum wäre wirklich doppelt so hilfreich, wenn man als Kommentar 
einfach nur die Frage beantwortet und die beleidigenden Kommentare - die 
nichts mit der Frage zu tun haben, wie "ein Buch lesen", etc. - sein 
lässt!
Gast #5793196
Lesenswert?
• ▲
▼
Mal abgesehen davon, dass Du die Uhr gestern wohl aus Versehen nicht 
eine Stunde vor, sondern fünf Jahre zurück gestellt hast, finde ich es 
interessant, dass Du den Rat, ein gutes Buch zu lesen, als Beleidigung 
empfindest.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.