3-9, 고정 너비 정수형 질문
안녕하세요 강의를 복습하며 헷갈리는 점이 있어 질문드립니다.
고정 너비 정수형은 시스템이 다른 운영체제에서도 코드가 정상적으로 작동할 수 있도록 정수 자료형의 크기를 미리 지정한 정수형으로 이해했습니다. 이러한 정의가 맞을까요?
printf 함수에서 고정 너비 정수형으로 선언된 변수(i32)의 형식지정자를 쓸 때 예시를 보며 살짝 헷갈리는 점이 생겼습니다.
예시에서 3가지 경우를 교수님께서 보여주셨는데, 전부 출력이 동일하게 나왔습니다.
만약 int type을 2바이트로 인식하는 시스템에 예제의 코드를 사용하면 메크로를 쓰지 않은 첫 번째, 두 번째 예시는 오류가 발생하는 건가요? 맞다면 sigend int 형식 변환자에 속하는 %d와 32비트로 고정된 변수 i32의 크기가 서로 맞지 않아서 일까요?
아직 이해가 부족해서 용어들이 적절히 쓰였는지 모르겠습니다.
답변 감사합니다~!
답변 1
3
안녕하세요, 답변 도우미 Soobak 입니다. 😀
고정 너비 정수 자료형이란, 이름에서 알 수 있듯이 항상 고정된 비트 너비를 가진 데이터 타입입니다.
말씀하신 것처럼, 다양한 시스템과 플랫폼 간의 호환성을 보장하기 위해 사용되는 자료형입니다.
예를 들어, 강의에서의 예시인 int32_t 는 항상 32 비트 정수를 의미하는 자료형입니다.
질문자님께서 말씀하신 강의에서의 예시 코드는 다음과 같은데요,
int32_t i32;
printf("me32 = %d\n", i32);
printf("me32 = %" "d" "\n", i32);
printf("me32 = %" PIRd32 "\n", i32);말씀하신 것처럼, int 가 2바이트인 시스템을 가정한다면, 첫 번째와 두 번째 printf() 는 에러 혹은 예상치 못한 결과를 발생시킬 수 있습니다.int 자료형이 2바이트인 시스템에서도 int32_t 자료형은 32비트를 가지게 될 것이므로,
형식 지정자 %d 는 int 자료형을 기대하지만 실제로는 해당 시스템에서 int32_t 자료형에 해당하는 자료형이 전달되었기 때문입니다.
따라서, PRId32 와 같은 매크로를 사용하여 이러한 문제를 해결하는 것입니다.
Export template 안됨
1
45
2
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
69
3
main 함수에서 왜 int만 선언이 되는걸까요
1
63
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
62
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
58
1
프로토타입과 함수간의 인자 불일치
1
80
2
12.12 헤더 관련 질문
1
63
2
Visual Studio Community 2026 사용 문의
1
148
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
65
2
getchar(), putchar()
1
96
3
강의자리ㅛ
1
84
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
119
2
소스파일안에 여러 파일
1
80
2
F5와 F7의 차이
1
82
2
c = TWO * (a+b); 에서 a와 b는?
1
63
2
; 세미콜론을 붙이는 기준에 문의
1
72
1
Step over 기능 문의
1
56
2
2.6 강의 따옴표 출력 규칙 문의
1
81
2
int main 함수 관련 오류 문의
1
71
2
13.4 words[0]
0
64
2
11.7 함수를 구현해 봤습니다.
1
65
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
67
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
57
2
11.6 fit_str함수를 구현해 봤습니다.
1
56
2





