Was bedeutet „| =“ Operation Mittelwert in C ++?
-
27-09-2019 - |
Frage
Ich habe den folgenden Code, und ich kann nicht verstehen, was es bedeutet:
var1 |= var2>0 ? 1 : 2;
Jeder kann mir bitte helfen!
Lösung
if (var2 > 0)
var1 = var1 | 1;
else
var1 = var1 | 2;
Es ist bitweise oder.
Andere Tipps
Alle a op= b
Operatoren sind eine Verknüpfung zu a = a op b
.
Da jedoch C ++ ermöglicht op
und op=
wird außer Kraft gesetzt getrennt setzen Sie auf jeden Implementierer von benutzerdefinierten Typen in Einklang sein.
cond ? x : y
kehrt x
wenn cond wahr und y
anders ist. Lesen Sie Ternary Operator
a |= b
ist eine Abkürzung für a = a | b
die a | b
zu a
a | b
ist bitweise OR von a
und b
. (Z 2 | 3 = 3 und 1 | 2 = 3)
Wie schon andere gesagt haben, es ist die Abkürzung für v1 = v1 | v2;
Eine andere Anwendung Sie kommen könnte across ist mit booleans.
Gegeben:
bool b = /*some value*/
Statt zu sagen:
if(a)
b = true;
Sie können sehen:
b |= a;
Integers können binär dargestellt werden, so dass jede Stelle (Bit-Schalter) ist 1 (EIN) oder 0 (aus):
00000000 == 0
00000001 == 1
00000010 == 2
00000011 == 3
00000100 == 4
00001000 == 8
00010000 == 16
bitweisen OR kombiniert zwei Zahlen, die durch die beiden Sätze von Bits "merging":
First number: 00110000
Second number: 00000010
Result: 00110010
Wenn ein Bit 1 in einer der beiden Eingangszahlen ist, dann wird es 1 in der Folge sein.
Vergleichen mit bitweise AND, die die „Überlappung“ der beiden Sätze von Bits findet:
First number: 00110100
Second number: 10011110
Result: 00010100
Wenn ein Bit 1 in beide der Eingangszahlen ist, dann wird es 1 in der Folge sein.
Wenn die Zahlen in Variablen a und b sind, können Sie legen Sie die die bitweise OR / AND Ergebnisse in eine neue Variable c:
unsigned int c = a | b; // OR
unsigned int c = a & b; // AND
Oft sind die Folge Bedürfnisse in einer der beiden Variablen gesetzt werden, d.
unsigned int c = a | b; // OR
c = a; // copy
So als Abkürzung, Sie können dies tun, in einem einzigen Schritt:
a |= b; // merge b directly into a
Wie andere Leute vor mir erwähnt haben, es bedeutet, dass Sie mit Zuweisungen von bitweise am Ende dann OR.
bit- oder können, indem sie auf der linken und rechten Seite Bit-Muster und legte sie oben auf einander dargestellt werden.
In jeder Spalte: 0 + 0 gibt 0, 1 + 0 ergibt 1, 0 + 1 1 gibt, 1 + 1 gibt 1
Im Zusammenhang mit booleans: false ODER falsch == false, true oder false == wahr, falsch oder wahr == true, wahr oder wahr == true
Hier ist ein Beispiel für bitweise OR und das resultierende Bitmuster: var1 (11) | = var2 (14) -> var1 (15)
1011 (11) OR 1110 (14) = 1111 (15)
Der Operator | = Mittel Zuordnung von bitweisen OR-Operator