2011-12-29 17 views
6

In VC2008, ho digitato questo codice:Perché il risultato 2 + 1 e 0 è 0?

int a = 2 + 1 & 0; 

e il risultato di questa espressione è a = 0

Perché il risultato è 0, ma non 2?

+0

ricerca Operatore di precedenza in C/C++. –

risposta

17

Perché il & operatore is evaluated after l'operatore + e 3 & 0 uguale 0.

Ovviamente è possibile posizionare le parentesi attorno alle espressioni per modificare l'ordine di valutazione. Per esempio:

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

Il + ha la precedenza maggiore rispetto al &. Here è una tabella completa di precedenza degli operatori.

+1

Buon tavolo, grazie! – Spark

Problemi correlati