Che cosa significa “| =” operazione di media in C ++?
-
27-09-2019 - |
Domanda
Ho il seguente codice e non riesco a capire che cosa vuol dire:
var1 |= var2>0 ? 1 : 2;
Qualcuno mi può aiutare per favore!
Soluzione
if (var2 > 0)
var1 = var1 | 1;
else
var1 = var1 | 2;
E 'bit per bit-o.
Altri suggerimenti
Tutti gli operatori a op= b
sono una scorciatoia per a = a op b
.
Tuttavia, poiché C ++ permette op
e op=
per essere sovrascritto a parte si basano su ogni realizzatore dei tipi personalizzati per essere coerenti.
ritorna cond ? x : y
x
if cond è vero e y
altrimenti. Leggi ternario Operatore
a |= b
è una scorciatoia per a = a | b
che si assegna a a | b
a
a | b
è OR bit a bit di a
e b
. (Esempio 2 | 3 = 3 e 1 | 2 = 3)
Come altri hanno detto che è l'abbreviazione di v1 = v1 | v2;
Un altro utilizzo si potrebbe incontrare è con booleani.
Dato:
bool b = /*some value*/
Invece di dire:
if(a)
b = true;
si potrebbe vedere:
b |= a;
Interi può essere rappresentato in binario, in modo che ogni cifra (bit, switch) è 1 (a) o 0 (spento):
00000000 == 0
00000001 == 1
00000010 == 2
00000011 == 3
00000100 == 4
00001000 == 8
00010000 == 16
OR bit combina due numeri di "fondere" i due insiemi di bit:
First number: 00110000
Second number: 00000010
Result: 00110010
Se un bit è 1 in uno dei numeri di ingresso, allora sarà 1 nel risultato.
Confronto con AND bit a bit, che trova la "sovrapposizione" dei due insiemi di bit:
First number: 00110100
Second number: 10011110
Result: 00010100
Se un bit è 1 in entrambi i numeri di ingresso, allora sarà 1 nel risultato.
Se i numeri sono variabili a e b, è possibile posizionare il il bit a bit e / o risultati in una variabile nuova c:
unsigned int c = a | b; // OR
unsigned int c = a & b; // AND
Spesso le esigenze di risultato per essere inseriti in una delle due variabili, cioè.
unsigned int c = a | b; // OR
c = a; // copy
Così come abbreviazione, si può fare questo in un unico passaggio:
a |= b; // merge b directly into a
Come altri prima di me hanno già detto, significa che ci si ritroverà con le assegnazioni di OR bit per bit.
OR bit può essere illustrato prendendo di sinistra e destra bit-modelli e metterli in cima a vicenda.
In ogni colonna: 0 + 0 dà 0, 1 + 0 dà 1, 0 + 1 dà 1, 1 + 1 dà 1.
Nel contesto di booleani: false o false false ==, vere o false == true, falso o vero == true, vere o vere == true
Ecco un esempio di OR bit a bit e lo schema di bit risultante: var1 (11) | = var2 (14) -> var1 (15)
1011 (11) OR 1110 (14) = 1111 (15)
L'operatore | = mezzi di assegnazione da operatore OR