본문 바로가기
언어/C

sizeof 연산자

by 맑은청이 2020. 9. 28.
728x90
반응형

sizeof 는 좀 특별합니다. 

컴파일러가 수행하고 CPU 가 실행하지 않는 특수한 연산자인데요. 

함수처럼 생겼지만 함수가 아닙니다. 

 

오늘은 프로그래밍을 할 때 sizeof 연산자를 쓸 때 주의해야할 점을 알아봅시다. 

 

sizeof 연산자의 피연산자는 자료형이다. 

 

sizeof 연산자는 피연산자의 자료형에 대한 연산입니다. 

즉 sizeof(5) 라는 연산을 진행할 때 5는 정수가 아니라 int 라는 자료형을 가리키는 겁니다 .

 

'sizeof(5) = sizeof(int)'

 

그리고 int 형은 4바이트기 때문에 sizeof(5)의 결과는 4가 됩니다. 

 

sizeof 연산자의 피연산자는 자료형 입니다.

 

 

int nData = 10;

printf("%d\n", sizeof(nData + 10));

 

답은 뭘까요?

네 4입니다. 

 

nData 가 char 이면 1이 뜨고 123.45F 면 4, 123.45 면 double 이니깐 8이 뜨겠죠? 

 

sizeof 연산자는 확장성을 위해서도 좋은 코드 입니다. 

만약 다음과 같은 배열을 선언한다고 생각합니다. 

 

int aList[5]; 

 

이 배열의 크기는 4인 int 가 5개니깐 20이겠죠. 

그럼 배열의 크기를 그냥 20으로 명시해도 되겠죠? 

하지만 만약 환경에 따라 , 어쩌면 나중에 int 의 크기가 8바이트 혹은 1바이트가 되면 어떡하죠? 

그리고 이 코드가 1억개 있었다면? 

프로그램 자체를 버려야할지도 모릅니다. 

그렇기 때문에 우리는 sizeof(int) 로 크기를 명시해 확장성을 높일 수 있죠. 

 

728x90
반응형

'언어 > C' 카테고리의 다른 글

%*c 형식문자  (0) 2020.09.22
NULL의 개념  (0) 2020.08.24