2016-09-10 3 views
2
unsigned char Flags; 

フラグが電源投入時のデフォルト値、つまり0の場合、フラグの各ステップにはどのような値が格納されますか?これ以上の明瞭度が必要

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

これは何ですか?

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

フラグはNULL値または何も値を持つことができません。 0を意味しましたか? – 2501

+0

はい。電源投入時のデフォルト値。 –

+1

最後のビットをチェックします。つまり、「0」または「1」です。 – ameyCU

答えて

2

Flags &= 0xfeif(Flags & 0x01)前に、最後の操作である場合、式は常にfalseとなりますので、条件が入力されることはありません。

0xfe

マスク11111110 であり、そして0x01マスクは常にゼロとなる最下位ビットをチェックからです。バイナリ値で

1

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

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

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

はその後if(Flags & 0x01)は常にfalseどんな初期値です。 ?????1?0 & 0000000100000000

+0

未定義のビヘイビアーに関する誤解を避けるため、 'Flags'の' someValue'に初期化を追加する必要があります。 –

関連する問題