본문 바로가기
프로그래밍/c언어 기초공부

[C언어 기초-14] sizeof 연산자. 자료형 byte 구하기

by 졸린이 2024. 8. 4.
반응형

sizeof 연산자

  • sizeof 연산자는 바로 다음에 나오는 상수, 변수나 자료형이 점유하고 있는 메모리의 byte수를 구해주는 전위 표기 단항 연산자이다.
  • sizeof 연산자는 바로 다음에 나오는 수식이나 자료형은 반드시 괄호를 사용해야 한다.
  • sizeof 연산자는 연산자로 특수기호를 사용하지 않고, 예약어를 사용한다.
  • sizeof 연산자는 프로그램의 이식성을 향상시킬 수 있다.

예제)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
main() {
    short x = 0;
    long y = 0;
 
    printf("Short Integer x    :    %d\n"sizeof y);
    printf("Integer        :    %d\n"sizeof(int));
    printf("Long + Integer    :    %d\n"sizeof y + sizeof(int));
    printf("Constant 3    :    %d\n"sizeof 3);
    printf("Expression    :    %d\n"sizeof(x + 3));
    printf("Character    :    %d\n"sizeof(char));
    printf("Float        :    %d\n"sizeof(float));
    printf("Double        :    %d\n"sizeof(double));
    printf("string        :    %d\n"sizeof("1234"));
    printf("STRING        :    %d\n"sizeof("ㄱㄴㄷㄹ"));
}
cs

여러 자료형의 사이즈를 출력하는데 자료형의 관한 추가 설명은 여기 링크 [C언어 기초-02] 데이터 편 변수와 자료형

7행 : short로 선언된 x는 2byte이다.

8행 : Integer는 4byte

9행 : long의 사이즈(4byte)와 int의 사이즈(4byte)를 더하면 8byte이다.

10행 : 상수 3 도 4byte

11행 : short는 2byte 상수는 4byte인데 두 개를 더하면 당연히 큰사이즈 쪽으로 맞춰진다. 그래서 4

12행 : character는 유명한 1byte다.

13행 : 실수 자료형 float도 4byte다.

14행 : 마찬가지 실수 자료형이지만 double은 float의 두배 사이즈를 차지한다. 8

15행 : 문자열 1234는 문자 하나당 1byte씩 차지한다.

그러나 c에서는 문자열 끝에 null을 넣어서 4글자면 총 5byte 사이즈가 된다. null을 넣는 이유는 컴퓨턱가 문자열의 끝을 알기 위해서라고 한다.

16행 : 마찬가지지만 한글은 한글자당 2byte를 차지하게 되어 ㄱㄴㄷㄹ 네글자면 8에 null 1byte 추가해서 총 9byte다.

 

반응형

댓글