c언어 signed -> unsigned 형변환 질문 드립니다. ^^;

noeoqzotngo의 이미지

#include

int main (void) {

int a = -100;

printf("%d\n", (unsigned int)a); // -100, signed int -> unsigned int
printf("%d\n", *((unsigned int *)&a)); // -100, pointer to signed int -> pointer to unsinged int

return 0;

}

(gcc test.c -pedantic -std=c99)

안녕하세요. 햇깔리는 게 있어서 질문을 드리고자 합니다. ^^;

저는 위의 프로그램의 형변환 부분에서 Type punning이 발생하여 -100이라는 정수의 비트열을 unsigned int형으로 접근하여 해석할줄 알고 음의 정수가 출력되지 않으리라 생각햇습니다. 그런데 그냥 -100이 출력이 되어서 어떻게 형변환이 되는 것인지 햇깔리더군요.

혹시 왜 그러한 것인지 아신다면 답변 부탁드리겠습니다 ^^;

shint의 이미지

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

noeoqzotngo의 이미지

감사드립니다 ^^!

이런 초보적인 부분에서 잘못을 범했네요.

아무래도 제가 진짜 초보라서 -_-;

무식한 질문 죄송하고, 답변과 레퍼런스 링크까지 정말 감사합니다. ^^~

shint의 이미지

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

noeoqzotngo의 이미지

많은 자료 제공 감사합니다.

덕분에 레퍼런스를 다시 한번 읽어보고 있습니다. ^^;