inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

4.2 sizeof 연산자

size_t 에 관한 질문 드립니다

1058

m1n_q

작성한 질문수 24

0

size_t 가 시스템에 따라

32비트 : unsigned int 혹은

64비트 : unsigned long long 

이 될 수 있다고 이해했습니다.

정확한 정의가 궁금하여 찾아보았더니, 

'' 해당 시스템에서 어떤 객체, 값을 포함할 수 있는 최대 크기를 표현한다. ''

라고 하는데요.

이 정의가 맞나요?

이 정의가 맞다면, size_t가 unsigned int 를 반환하는 경우

해당 시스템의 자료형 최대 크기가 32비트인건지....

그렇다면 그 환경은 unsigned long long 이라는 자료형을 사용할 수가 없는 환경인건지.... 이해가 부족하여 질문드립니다.

c

답변 3

2

안소

안녕하세요!

- 해당 정의 맞습니다. 

- 32bit 시스템 환경이라도 double, long long, unsigned long long 과 같은 8byte (=64bit) 크기의 자료형 사용할 수 있습니다.

32bit 환경에서 출력한 결과입니다. (상단의 x86 확인하실 수 있습니다. ) 이렇게 32bit 환경에서도 8byte 자료형 사용하실 수 있고 크기도 8 로 잘 나온 것을 확인할 수 있습니다.

size_t 의 정의를 조금 더 구체화하자면 현 시스템이 "한번에" 처리할 수 있는 최대 크기를 의미합니다. 32bit 환경에서는 8byte 자료형들을 4byte(=32bit) 크기의 레지스터를 2 개 이용해서 표현하는 등등 이런 방식으로 8byte 자료형을 표현한다고 합니다.

아래 링크에 32bit 시스템에서 8byte 자료형들이 구동되는 방식이 자세히 나와있습니다. 참고해주세요!

링크 1 : 32bit 시스템에서의 long long

링크 2 : 32bit 시스템에서의 double

0

안소

네! 괜찮을 것 같습니다.

0

m1n_q

친절한 답변 감사드립니다! 말씀해주신대로라면, 해당 시스템이 처리할 수 있는 '기본단위' 의 최대 크기라는 느낌으로 이해를 해도 괜찮을까요?

Export template 안됨

1

8

2

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

52

3

main 함수에서 왜 int만 선언이 되는걸까요

1

56

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

54

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

49

1

프로토타입과 함수간의 인자 불일치

1

73

2

12.12 헤더 관련 질문

1

60

2

Visual Studio Community 2026 사용 문의

1

137

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

60

2

getchar(), putchar()

1

93

3

강의자리ㅛ

1

79

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

112

2

소스파일안에 여러 파일

1

75

2

F5와 F7의 차이

1

76

2

c = TWO * (a+b); 에서 a와 b는?

1

58

2

; 세미콜론을 붙이는 기준에 문의

1

68

1

Step over 기능 문의

1

53

2

2.6 강의 따옴표 출력 규칙 문의

1

74

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

60

2

11.7 함수를 구현해 봤습니다.

1

62

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

64

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

53

2

11.6 fit_str함수를 구현해 봤습니다.

1

53

2