这个C#代码片段如何工作?

时间:2010-05-17 08:32:06

标签: c# asp.net

有人可以解释下面这段代码

int x = 45; 
int y = x &= 34;

它将32分配给y

7 个答案:

答案 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)

相当于:

int x = 45;
x = x & 34;
int y = x;
对于整数类型,

The & operator计算其操作数的逻辑按位AND。

答案 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。