2016-09-10 5 views
2

Welchen Wert erhalten jeden Schritt in Flag gespeichert, wenn Flag hat Standardwert beim Einschalten, d. H. 0?Benötigen Sie einige Klarheit über diese

Flags |=0x04; //Flags =  What will be stored here? 
Flags &= 0xfe; //Flags =  What will be stored here after bitwise operation? 

Was macht diese if-Anweisung?

if(Flags & 0x01) 
{ 
    //When will it enter into this conditional? 
} 
+1

Flags kann nicht den Wert null oder einen nichts Wert. Meinst du 0? – 2501

+0

Ja. Der Standardwert beim Einschalten. –

+1

Es würde das letzte Bit prüfen, d. H. Ob es "0" oder "1" ist. – ameyCU

Antwort

2

Wenn Flags &= 0xfe ist die letzte Operation vor if(Flags & 0x01), wird der Ausdruck immer false sein, so dass die bedingten nicht eingegeben werden.

Dies liegt daran, 0xfe Maske 11111110 ist, und 0x01 Maske überprüft die am wenigsten signifikante Bit, die immer Null.

1

In Binärwerte:

unsigned char Flags; // Flags = ????????; 

Flags |=0x04; // Flags = ?????1?? 

Flags &= 0xfe; // Flags = ?????1?0 

Dann ist if(Flags & 0x01) immer false mit dem, was Anfangswert. weil ?????1?0 & 00000001 ist 00000000

+0

Sie sollten für 'Flags' eine Initialisierung zu 'someValue' hinzufügen, um mögliche Missverständnisse bezüglich undefiniertem Verhalten zu vermeiden. –

Verwandte Themen