¿Cuál es el significado de esta operación?
Teníamos este fragmento de código en un examen y no tenía idea de cuál era su significado y cómo funcionaba.
unsigned int a = 1, b = 2, c;
y luego c = a&b || a&&b;
La pregunta era: ¿Cuál es el valor de c
? La respuesta fue 1.
¿Podría alguien explicar lo que está sucediendo en la inicialización de c
?
davy.ai
El código inicializa tres variables:
a
con el valor de 1,b
con el valor de 2, yc
sin valor. La sentenciac = a&b || a&&b;
asigna el valor dec
al resultado de la expresióna&b || a&&b
. La expresión se evalúa siguiendo el siguiente orden de operaciones:1.
a&b
se evalúa primero, que es el AND bit a bit dea
yb
. Comoa
es 1 yb
es 2, el resultado es 0.2.
a&&b
se evalúa a continuación, que es el AND lógico dea
yb
. Comoa
es 1 yb
es 2, el resultado es 1.3. Finalmente, se evalúa el resultado de la expresión
a&b || a&&b
, que es el OR lógico de los dos resultados anteriores. Como el resultado dea&b
es 0 y el resultado dea&&b
es 1, el resultado de la expresión es 1.Por lo tanto, el valor de
c
es 1.