2011-12-29 29 views
6

En VC2008, he escrito este código:¿Por qué el resultado 2 + 1 y 0 es 0?

int a = 2 + 1 & 0; 

y el resultado de esta expresión es a = 0

Por qué el resultado es 0, pero no 2?

+0

búsqueda Precedente del operador en C/C++. –

Respuesta

17

Debido a que el operador &is evaluated after el operador + y 3 & 0 es igual 0.

Por supuesto, puede colocar llaves alrededor de las expresiones para cambiar el orden de evaluación. Por ejemplo:

int a = 2 + (1 & 0); 
/* a == 2 */ 
5

El + tiene mayor prioridad que el &. Here es una tabla completa de precedencia del operador.

+1

¡Buena mesa, gracias! – Spark