2017-02-01 7 views

Antwort

7

== hat höhere Priorität als &. So

if (s & i == 0) 

tatsächlich gleichwertig

ist
if (s & (i == 0)) 

Mit anderen Worten: Sie überprüfen, ob i0 ist und dann & ing das Ergebnis (0 oder 1) mit s. Sie wollten wahrscheinlich

if ((s & i) == 0) 
4

Die erste Bedingung

if(s & i == 0) cout << (s & i) << endl; 

entspricht dieser Bedingung

if(s & (i == 0)) cout << (s & i) << endl; 

und hat nichts gemein mit dieser Bedingung

if(!(s & i)) cout << (s & i) << endl; 

Ich glaube, Sie

if((s & i) == 0) cout << (s & i) << endl; 
012 bedeuten

In diesem Fall sind beide Bedingungen gleichwertig.

4

der Gleichheits-Vergleichsoperator (==) eine höhere Priorität als die bitweisen UND-Operator (&), so dass der erste Ausdruck ist äquivalent zu:

if(s & (i == 0)) cout << (s & i) << endl; 

Da i zu 3 gesetzt ist, (i == 0) ist false, welches in bitweises and'ed in 0 umgewandelt wird. 4 & 0 entspricht 0, also wird nichts gedruckt.

Verwandte Themen