需要澄清一下

时间:2016-09-10 08:03:17

标签: c operators bitwise-operators

unsigned char Flags;

如果Flag在上电时具有默认值,即0?

,则在Flag中的每一步中存储什么值
Flags |=0x04;  //Flags =      What will be stored here?
Flags &= 0xfe; //Flags =      What will be stored here after bitwise operation?

这个if语句有什么作用?

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

2 个答案:

答案 0 :(得分:2)

如果Flags &= 0xfeif(Flags & 0x01)之前的最后一次操作,则表达式将始终为false,因此不会输入条件。

这是因为0xfe掩码是11111110 2 0x01掩码检查最低有效位,它总是为零。

答案 1 :(得分:1)

二进制值:

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

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

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

然后if(Flags & 0x01)始终为false,无论初始值如何。 因为?????1?0& 0000000100000000