Puede alguien explicar el siguiente fragmento de código¿Cómo funciona este fragmento de código C#?
int x = 45;
int y = x &= 34;
Asigna 32-y
Puede alguien explicar el siguiente fragmento de código¿Cómo funciona este fragmento de código C#?
int x = 45;
int y = x &= 34;
Asigna 32-y
Es la realización de un bit a bit "y" como un operador de asignación compuesta. Es equivalente a:
int x = 45;
x = x & 34;
int y = x;
Ahora 45 = 32 + 8 + 4 + 1, y 34 = 32 + 2, así que el resultado de un bit a bit "y" es de 32.
personalmente creo que el uso de un operador de asignación compuesta en una declaración de variables es bastante ilegible - pero se supone que esto no era código "real" para comenzar con ...
¡Maldición, no se puede competir con Skeet! (debe agregarse aquí: http://meta.stackexchange.com/questions/9134/jon-skeet-facts). Cuando 10 personas, entre ellas @Jon, respondan una pregunta al mismo tiempo, solo se irá con más de 2 insignias de Buena respuesta ... y todo antes de la hora del té de la mañana (en horario de Londres). Agradable :) – slugster
es una operación bit a bit, más información se puede encontrar aquí:
http://msdn.microsoft.com/en-us/library/sbf85k1c%28VS.80%29.aspx
Es equivalente a:
int x = 45;
x = x & 34;
int y = x;
The & operator para tipos integrales calcula el bit a bit lógico Y de sus operandos.
Parece AND a nivel de bit, que se asigna a x mediante la notación de atajo &=
, y también se asigna a y
.
45 = 101101(binary)
34 = 100010(binary)
45 & 34 = 100000(binary) = 32
Aquí x &= 34
se utiliza como una tarea y una expresión. Calcula el valor de x & 34
, lo asigna al x
y el valor de la expresión es el asignado.
El resultado de la operación bit a bit 45 & 34
es 32
, que se asigna a x, y luego también a y.
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
Probablemente retroceso accidental por OP – mafu