C, Cpp
C의 자료형 별 크기
흑조롱이
2023. 9. 12. 09:42
이번 글에서는 C언어에서 자주 사용하는 자료형들의 크기를 알아보겠습니다.
MS의 C++ 레퍼런스에서는 아래의 표처럼 자료형들의 크기를 정의하고 있습니다.
포인터 자료형의 크기는 여기를 참고했습니다.
type | 크기 (bytes) |
char | 4 |
int | 4 |
short | 2 |
double | 8 |
float | 4 |
long long | 8 |
long double | 8 |
pointer | 4 ~ 20 |
bool | 1 |
위의 레퍼런스는 C++을 기준으로 작성한 것이니, C에서는 자료형들의 크기가 어떨 지 궁금해졌습니다.
C언어에서 자료형 각각의 크기를 알아보고자, 이를 출력하는 C코드를 직접 만들었습니다.
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
printf("Size of char: %zu bytes \n", sizeof(char)); // 1 바이트
printf("Size of int: %zu bytes \n", sizeof(int)); // 4 바이트
printf("Size of short: %zu bytes \n", sizeof(short)); // 2 바이트
printf("Size of double: %zu bytes \n", sizeof(double)); // 8 바이트
printf("Size of float: %zu bytes \n", sizeof(float)); // 4 바이트
printf("Size of long: %zu bytes \n", sizeof(long)); // 4 바이트
printf("Size of long long: %zu bytes \n", sizeof(long long)); // 8 바이트
printf("Size of long double: %zu bytes \n", sizeof(long double)); // 12 바이트
printf("Size of void pointer: %zu bytes \n", sizeof(void*)); // 4 바이트
printf("Size of int pointer: %zu bytes \n", sizeof(int*)); // 4 바이트
printf("Size of bool: %zu bytes \n", sizeof(bool)); // 1 바이트
return 0;
}
실행해본 결과는 아래와 같습니다.
"long double"의 크기는 8바이트가 아닌 12바이트로 나오는 것을 알 수 있습니다.
이는 C언어와 C++의 차이로 인한 것으로 예상합니다.
+@) 오타/오류 지적 및 피드백은 언제나 환영합니다