묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
고정너비 정수
안녕하세요 수업을 듣다가 의문점이 생겨 글을 올립니다. 제가 이해한 바로는 고정너비 정수를 이용하는 이유가 C언어 표준에서는 자료형마다 최소 기준만을 설정해놓았기 때문에, 만약 시스템(컴파일러 등등)이 달라진다면 int 나 char와 같은 자료형이 차지하는 메모리도 달라질 수 있기 때문에, 이식성을 높이기 위해서int32_t와 같은 자료형을 사용한다는 것입니다.하지만 stdint.h를 보면 typedef int int32_t; 처럼 int의 별칭을 int32_t로 정하고 있습니다. 이러한 상황에서는 int를 32bit로 사용하는 시스템에서는 int32_t가 32bit를 사용하겠지만, 만약에 int를 64bit로 사용하는 시스템이 있다고 가정을 한다면(C 표준은 bit의 최소기준만 설정해놓았기 때문), int32_t는 int의 별칭(alias)이기 때문에 결국은 int32_t도 64bit를 사용하는 것 아닌가요? 이렇게 된다면 int32_t는 더 이상 고정되어있지 않고 시스템이 바뀔 때마다 달라지는 것 아닌가요? 궁금합니다..
-
미해결홍정모의 따라하며 배우는 C언어
고정너비 정수에 대한 질문입니다
int 타입은 하드웨어 의존 가능성이 있으므로 플랫폼에 따라 4바이트 또는 2바이트로 실행이 될 수 있으므로 이식성에 문제가 있을 수 있음을 설명하셨습니다. 그래서 플랫폼 independent하게 4바이트로 고정 될 수 있는 int32_t라는 타입이 있는 것으로 이해가 됩니다. 그러나 stdint.h에 정의되고 있는 아래 typedef에 의하면 그냥 원래 int 를 int32_t라는 이름으로 재정의하고 있을 뿐입니다. 그런데 왜 이것이 32비트로 고정이 되는지 궁급합니다. 즉, int32_t i 로 i 변수를 define 한다는 것은 int i 와 다를 바가 없는 것으로 이해가 됩니다. 아시겠지만 tydef는 구글링 한 바로는 아래와 같습니다. typedef int int32_t; The typedef is a keyword used in C programming to provide some meaningful names to the already existing variable in the C program. It behaves similarly as we define the alias for the commands. In short, we can say that this keyword is used to redefine the name of an already existing variable.