unsigned int

하하의 이미지

main() {

unsigned int val;

val = 0x89ABCDEF;

printf(" %d \n", val);

}

위 코드에서 원하는 어떤 숫자(아주 큰 10진수)가 안나오고

-1985229329

이런 수가 나오는 이유는 무엇인가요?

sizeof(unsigned int) 하면 4byte가 찍힘니다.

이말은 최상위. 부호 비트까지 수로 채워 넣을 거다. 그러니

0xffffffff 의 숫자까지 표현할 수 있다가 아닌가요?

왜.. 값을 표현 못하겠다의 의미 같은 -(음수부호)가 붙어서

오는 건가요?... 암만 생각해도.. 이유를 모르겠습니다.

avimimus의 이미지

unsigned int 를 출력하시려면, %d 가 아니라, %u 를 하셔야 하지 않을까요?

0x89ABCDEF 의 2의 보수를 취하면, -1985229329 입니다.

monpetit의 이미지

printf(" %u \n", val); %d 대신 %u를 사용해 보세요.