inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C언어

3.9 고정 너비 정수

3-9, 고정 너비 정수형 질문

해결된 질문

359

이재완

작성한 질문수 28

1

안녕하세요 강의를 복습하며 헷갈리는 점이 있어 질문드립니다.

  1. 고정 너비 정수형은 시스템이 다른 운영체제에서도 코드가 정상적으로 작동할 수 있도록 정수 자료형의 크기를 미리 지정한 정수형으로 이해했습니다. 이러한 정의가 맞을까요?

  2. printf 함수에서 고정 너비 정수형으로 선언된 변수(i32)의 형식지정자를 쓸 때 예시를 보며 살짝 헷갈리는 점이 생겼습니다.

    예시에서 3가지 경우를 교수님께서 보여주셨는데, 전부 출력이 동일하게 나왔습니다.

    만약 int type을 2바이트로 인식하는 시스템에 예제의 코드를 사용하면 메크로를 쓰지 않은 첫 번째, 두 번째 예시는 오류가 발생하는 건가요? 맞다면 sigend int 형식 변환자에 속하는 %d와 32비트로 고정된 변수 i32의 크기가 서로 맞지 않아서 일까요?

 

아직 이해가 부족해서 용어들이 적절히 쓰였는지 모르겠습니다.

답변 감사합니다~!

c

답변 1

3

Soobak

안녕하세요, 답변 도우미 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비트를 가지게 될 것이므로,
형식 지정자 %dint 자료형을 기대하지만 실제로는 해당 시스템에서 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