有人可以解释下面这段代码
int x = 45;
int y = x &= 34;
它将32分配给y
答案 0 :(得分:25)
它作为复合赋值运算符执行按位“和”。它相当于:
int x = 45;
x = x & 34;
int y = x;
现在45 = 32 + 8 + 4 + 1,34 = 32 + 2,因此按位“和”的结果为32。
我个人认为在变量声明中使用复合赋值运算符是非常难以理解的 - 但可能这不是“真正的”代码开始......
答案 1 :(得分:10)
int x = 45;
int y = x &= 34;
Gives: y = 32
int x = 45; // 45 = 101101
// 34 = 100010
x = x & 34; // 101101
// 100010 &
// --------
// 100000 ( = 32 )
int y = x; // y = 32
答案 2 :(得分:0)
这是一个按位操作,可在此处找到更多信息:
http://msdn.microsoft.com/en-us/library/sbf85k1c%28VS.80%29.aspx
答案 3 :(得分:0)
答案 4 :(得分:0)
看起来像按位AND,由&=
快捷方式表示法分配给x,并且也分配给y
。
答案 5 :(得分:0)
45 = 101101(binary)
34 = 100010(binary)
45 & 34 = 100000(binary) = 32
答案 6 :(得分:0)
此处x &= 34
用作赋值和表达式。它会计算x & 34
的值,将其分配给x
,并且表达式的值是指定的值。
按位和操作45 & 34
的结果是32
,它被分配给x,然后也分配给y。