簡體   English   中英

“| =”操作在C ++中意味着什么?

[英]What does “|=” operation mean in C++?

我有以下代碼,我無法理解它是什么意思:

var1 |= var2>0 ? 1 : 2;

任何人都可以幫助我!

if (var2 > 0)
  var1 = var1 | 1;
else 
  var1 = var1 | 2;

這是按位 - 或。

所有a op= b運算符都是a = a op b的捷徑。

但是,由於C ++允許單獨重寫opop= ,因此您依賴於每個自定義類型的實現者是一致的。

Assignment by bitwise OR進行Assignment by bitwise OR

v1 |= v2;

是短的:

v1 = v1 | v2;

cond ? x : y cond ? x : y如果cond為真則返回x ,否則返回y 閱讀三元運算符

a |= ba = a | b簡寫 a = a | b指定a | b a | ba

a | b a | bab 按位OR (例如2 | 3 = 3和1 | 2 = 3)

正如其他人所說,它是v1 = v1 | v2;縮寫 v1 = v1 | v2; 您可能遇到的另一種用法是布爾值。
鑒於:

bool b = /*some value*/

而不是說:

if(a)
  b = true;

你可能會看到:

  b |= a;

整數可以用二進制表示,因此每個數字(位,開關)是1(開)或0(關):

00000000  ==  0
00000001  ==  1
00000010  ==  2
00000011  ==  3
00000100  ==  4
00001000  ==  8
00010000  ==  16

按位OR通過“合並”兩組位組合兩個數字:

First number:     00110000
Second number:    00000010
Result:           00110010

如果輸入數字的位數為1,則結果中的值為1。

與按位AND比較,它找到兩組位的“重疊”:

First number:     00110100
Second number:    10011110
Result:           00010100

如果輸入數字的位數為1,則結果中的數字為1。

如果數字在變量a和b中,則可以將按位OR / AND結果放入新變量c:

unsigned int c = a | b; // OR

unsigned int c = a & b; // AND

通常,結果需要放入兩個變量中的一個,即

unsigned int c = a | b; // OR
c = a; // copy

因此,作為簡寫,您可以一步完成:

a |= b; // merge b directly into a

正如我之前提到的其他人一樣,這意味着你最終會按位OR進行分配。

按位OR可以通過采用左側和右側位模式並將它們放在彼此的頂部來說明。

在每列中:0 + 0給出0,1 + 0給出1,0 + 1給出1,1 + 1給出1。
在布爾值的上下文中:false OR false == false,true或false == true,false OR true == true,true或true == true。

這是一個按位OR和結果位模式的例子:var1(11)| = var2(14) - > var1(15)

1011 (11)
OR  1110 (14)  
=   1111 (15)

運算符| =表示按位運算符分配

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM