얼마전 회사에서 담당했던 소스코드 정적검증 도중 검출된 문제와 관련하여 일주일 가량을 어떻게 리포팅 해야할까 고민하다 Misra-C rule 10.5 에서 이유를 찾았다. Rule 10.5의 내용은 다음과 같다. 10.5 (required): If the bitwise operators ~ and > 4; /* not compliant */result = ((unsigned char)(~port)) >> 4; /* compliant */ 사실 bitwise 연산자에도 integral promotion이 적용된다는 것은 모르고 있었다. C99에도 언급이 되어 있었던 부분인데 사실 이 부분은 사용하는 컴파일러마다 underlying type을 어떻게 처리할지는 다르기 때문에 유심히 살펴볼 필요가 있을 것 같..