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) 로 크기를 명시해 확장성을 높일 수 있죠.