我对按位运算符很陌生。假设我有 3 个变量a
,b
和c
, 这些值是二进制的:
a = 0001
b = 0011
c = 1011
现在,我想像这样执行按位与:
a
AND b
AND c
--------
d = 0001
d &= a &= b &= c
不起作用(如我所料),但我该怎么做?谢谢
我对按位运算符很陌生。假设我有 3 个变量a
,b
和c
, 这些值是二进制的:
a = 0001
b = 0011
c = 1011
现在,我想像这样执行按位与:
a
AND b
AND c
--------
d = 0001
d &= a &= b &= c
不起作用(如我所料),但我该怎么做?谢谢
这有什么问题。
d = a & b & c;
你要:
d = a & b & c;
&=
表示按位与并赋值。
Ifd
最初被分配0
为您所说的表达式,它将始终评估为 0,因为任何内容都&
0
将等于0
。
这应该工作
int a = 1; // 0001
int b = 3; // 0011
int c = 11; // 1011
int d = 0;
d = a & b & c;
您可能只是忘记将“d”初始化为全 1,它默认为 0。您可以通过分配 d=-1 或如果您愿意,d=0xffffffff 轻松将所有位设置为 1,尽管因为您只是使用 4 位,d=0xF 就足够了。
话虽如此,这样的菊花链操作符往往比其他人建议的拆分操作更易读。