2016-09-10 7 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 &= 0xfeif(Flags & 0x01) 전에 마지막 작업 인 경우 조건이 입력되지 않도록

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

플래그 null 값 또는 아무것도의 값을 가질 수 없습니다. 0을 의미 했습니까? – 2501

+0

예. 전원을 켰을 때의 기본값. –

+1

'0'또는 '1'이면 마지막 비트를 검사합니다. – ameyCU

답변

2

는 표현은 항상 false 될 것입니다.

0xfe 마스크 11111110 이며, 0x01 마스크는 항상 0이됩니다 최하위 비트를 확인하기 때문입니다. 이진 값에

1

:

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

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

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

그런 다음 if(Flags & 0x01) 항상 false 어떤 초기 값입니다. ?????1?0 & 00000001이기 때문에 00000000

+0

정의되지 않은 동작에 대한 오해를 피하기 위해'Flags'에'someValue'에 초기화를 추가해야합니다. –