본문 바로가기
Study/C언어

C언어 - 정수형의 크기

by 멘탈은안녕하신가 2018. 12. 10.
728x90
반응형
  • 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
 
int main(void )
{
 
                 int num1 = 10;
                 int num2 = 20;
                 int num3 = 30;
                 int num4[3= { 10,20,30 };
 
                printf"int = %d byte\n", (int )sizeofint));
                printf"&num1 = %d, &num2 = %d, &num3 = %d\n" , &num1, &num2, &num3);
                printf"num4[0] = %d, num4[1] = %d, num4[2] = %d\n" , &num4[0], &num4[1], &num4[2]);
}
 
cs

 

  • 출력

 

 

  • 자료형의 크기에 대해 얕게 배운 사람이라면, 위의 코드를 보고 출력값을 본 뒤 아래와 같은 의문을 가졌을 것이다.
    • " 정수형(int)는 4byte이기 때문에 num4[3] 배열은 4byte씩 차이가 나는 반면, num1, num2, num3는 왜 12 byte씩 차이가 나지?"
  • 여기서 문제는 차례대로 쓴 것을 '크기'라고 믿는다는 것이다.
  • 배열의 경우 차례대로 나열되어 있기 때문에 자료형의 크기만큼 차이가 난다.
  • 하지만 위의 결과처럼 num1, num2, num3는 순서만 차례대로일뿐, 자료형의 크기만큼 나열되지 않는다.
  • 크기를 정하는것은 코드의 나열방식이 컴퓨터의 시스템이기 때문이다.
  • 컴퓨터가 12 byte를 부여해 12byte씩 차이가 날 수도 있고, 8byte를 부여해 8byte씩 차이가 날 수도 있다는 것이다.
  • 정리하면, 자료형의 크기가 각각 일정하고, 배열과 같이 차례대로 나열되는 경우가 아니라면 컴퓨터가 부여하는 임의의값의 크기대로 나열된다.
728x90
반응형

댓글