什么是“| =”,在C温度平均++?
-
27-09-2019 - |
题
我有以下的代码,我不明白这是什么意思:
var1 |= var2>0 ? 1 : 2;
任何人都可以帮我请!
解决方案
if (var2 > 0)
var1 = var1 | 1;
else
var1 = var1 | 2;
它的按位或
其他提示
所有a op= b
运营商的捷径a = a op b
。
然而,由于C ++允许op
和op=
被覆盖单独你依靠自定义类型的每个实施者要一致。
正如其他人说,它是短期的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
位或通过“合并”的两组位结合了两种数:
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
由于我之前的其他人都提到,这意味着你将与按位或工作分配结束。
位或可以通过取左手和右手侧的位图案,并把它们的上顶部海誓山盟所示。
在每一列:0 + 0 0给出,1 + 0给出1,0 + 1给出了1,1 + 1给出1.结果 在布尔值的上下文中:假或假== FALSE,TRUE或FALSE ==真,假或真== TRUE,真或真== TRUE
。下面是按位或将所得的位模式的一个示例: VAR1(11)| = VAR2(14) - > VAR1(15)
1011 (11) OR 1110 (14) = 1111 (15)
操作员| =手段由位OR运算符分配
不隶属于 StackOverflow