8 비트 값을 16 비트 값과 비교할 때 어떤 일이 발생하는지 궁금합니다.은 8 비트 값과 16 비트 값을 비교합니다.
내가 코드 예제에 의한 문제를 설명하려고합니다 :
bool result;
unsigned char a_8bit = 0xcd;
unsigned short b_16bit = 0xabcd;
result = a_8bit < b_16bit;
가능한 결과가 될 수 있습니다
- a_8bit는 암시 적으로 서명되지 않은 짧은에 주조 및 16 비트 값으로 b_16bit을 비교한다 . 결과는 참
- b_16bit는 암시 적으로 부호없는 char에 캐스트되고 8 비트 값인 a_8bit와 비교됩니다. 결과가 false입니다.
컴파일러가이 코드를 사용하여 수행하는 작업에 대한 단서가 있습니까? 물론, 나는 그것을 시험해 볼 수 있지만이 코드의 다른 컴파일러에 의해 다른 해석이 있습니까?
). 둘 다 정수로 변환됩니다. 그리고 bool에 주조했다. 하지만 int의 크기는 구현이 정의되어 있습니다 –
@Koushik 'bool'에는 캐스트가 없습니다. '<'의 결과는 이미'bool' 타입입니다. –