1. 변환 후의 형이 무부호이면 modulo 연산에 의해 변환됩니다. 위 코드의 경우
unsigned char로 표현 가능한 값을 가질 때까지 (UCHAR_MAX+1)을 반복적으로
더하거나 뺀 값이 결과입니다. UCHAR_MAX == 0xFF 라고 가정하면
(0x1FF - (0xFF + 1)) == 0xFF가 변환 후의 결과가 됩니다.
2. 변환 후의 형이 유부호이면 implementation-defined입니다.
C99와 C++ 표준이 표현은 다르게 하지만 결국 같은 얘기를 하고 있습니다.
제가 C90 표준은 갖고 있지 않아서 확인은 하지 못했지만 마찬가지일 거라고 생각합니다.
정수형 변환의 경우 변환 후의 형의 유부호인지 무부호인지에 따라 달라집니
정수형 변환의 경우 변환 후의 형의 유부호인지 무부호인지에 따라 달라집니다.
1. 변환 후의 형이 무부호이면 modulo 연산에 의해 변환됩니다. 위 코드의 경우
unsigned char로 표현 가능한 값을 가질 때까지 (UCHAR_MAX+1)을 반복적으로
더하거나 뺀 값이 결과입니다. UCHAR_MAX == 0xFF 라고 가정하면
(0x1FF - (0xFF + 1)) == 0xFF가 변환 후의 결과가 됩니다.
2. 변환 후의 형이 유부호이면 implementation-defined입니다.
C99와 C++ 표준이 표현은 다르게 하지만 결국 같은 얘기를 하고 있습니다.
제가 C90 표준은 갖고 있지 않아서 확인은 하지 못했지만 마찬가지일 거라고 생각합니다.
댓글 달기