我对按位运算符很新。假设我有3个变量a
,b
和c
,这些值是二进制的:
a = 0001
b = 0011
c = 1011
现在,我想按照这样执行按位:
a
AND b
AND c
--------
d = 0001
d &= a &= b &= c
不起作用(正如我预期的那样),但我怎么能这样做?
感谢
答案 0 :(得分:17)
这是怎么回事。
d = a & b & c;
答案 1 :(得分:3)
你想:
d = a & b & c;
&=
表示按位AND并且也分配。
如果d
最初被指定为0
你的表达式,那么它总是会评估为0,因为任何&
0
都等于0
。
答案 2 :(得分:1)
这应该有效
int a = 1; // 0001
int b = 3; // 0011
int c = 11; // 1011
int d = 0;
d = a & b & c;
答案 3 :(得分:0)
您可能只是忘记将'd'初始化为全1,并且默认为0.您可以通过指定d = -1轻松地将所有位设置为1,或者如果您愿意,d = 0xffffffff,尽管你只使用4位,d = 0xF就足够了。
话虽如此,像其他人一样的菊花链操作员往往不如其他人所暗示的那么可读。