char a =-1;
unsigned int b = (unsigned int)a;
b값 보면 0xFFFFFFFF 던데 왜이런거냐?
char에서 unsigned char로 먼저 바꾼후에(-1 -> 255)
unsigned char에서 unsigned int(앞에 0비트로 채워짐 0xFF -> 0x000000FF)로 되는게 아니라
char에서 먼저 int로 바꾼담에 (0xFF -> 0xFFFFFFFF)
int에서 unsigned int로 바꿔서(0xFFFFFFFF -> 0xFFFFFFFF) 그런거 같은데
이렇게 하는 특별한 이유같은게 있음??
비부호형으로 캐스팅을 해서 그런게 아니라 원래 자료형이 부호형이여서 msb확장하는거같은데
unsigned char에서 캐스팅하면 000000FF뜰듯
signed char에서 signed int로 캐스팅 (promotion?)된게 아닐까나
우선 int형으로 바뀌어서 0xFFFFFFFF가 되고 unsigned int로 가는 거 같은데
이거 표준에 정의되긴 한거야? 아니면 하드웨어 맘대로야?