b = (unsigned char)(a & 0x00ff);과 b = (unsigned char)a; 차이

firesnow의 이미지

아래코드에서 3번라인처럼 사용할 때와 4번라인처럼 사용할 때, 각각 어떤 차이가 있나요?

1. unsigned int a = 0x1234; //16bit
2. unsigned char b; //8bit
3. b = (unsigned char)(a & 0x00ff);
4. b = (unsigned char)a;

lugi의 이미지

다만 3번이 코드를 읽는사람에게, 코드 작성자의 의도를 더 명확하게 표시하는것 같습니다.
4번의 경우, 기본적으로 컴파일러가 상위 바이트를 버리겠지만, 작성자가 이를 고려한 것인지 좀 모호하게 보이기도 합니다. :-)

--------------------------------------------------------------------------------------
조금씩이라도 전진한다.

바라미의 이미지

삭제

firesnow의 이미지

ANSI-C나 MISRA-C 등과 같은 Rule...