C - 데이터형(정수형, 실수형, 문자형), 오버플로우

정수형

정수 자료형 크기 및 범위

| 자료형 | 크기 | 범위 | | — | — | —| |char | 1바이트 | -128~127| |short| 2바이트 |-32,768~32,767| |int| 4바이트 | -2,147,483,648 ~ 2,147,483,647 | |long| 4바이트 | -2,147,483,648 ~2.147.483.647 |

화면에 정수를 출력하는 방법

#include <stdio.h>

main() {
  int a =5, b=2,c;
  c = a  + b;
  printf("%d \n",c);
}

출력 함수에서 c을 출력하기 위해 서식 지정자 %d를 사용한다. c을
십진수 정수로 출력한다.

- 정수 출력 서식 지정자
%d : char, short, int 를 정수로 출력
%ld : long 을 정수로 출력
%lld : long long 을 정수로 출력

실수형

실수 자료형 크기 및 범위

| 자료형 | 크기 | 범위 | | — | — | —| flaot| 4바이트 | -3.4 x 10^38 ~ 3.4 x 10^38 | double| 8바이트 | -1.8 x 10^308 ~ 1.8 x 10^308 |

화면에 실수를 출력하는 방법

#include <stdio.h>

main() {
  float f = 3.14f; // float 리터럴
  double d = 1.4; // double 리터럴
  printf("%f \n",f);
  printf("%f \n",d);
}

- 실수 출력 서식 지정자
%f : double, float 을 실수로 출력

문자형

자료형 크기 범위
char 1바이트 -128~127

화면에 문자를 출력하는 방법

#include <stdio.h>

main() {
  char largeA = 'A';
  char smallA = 'a';

  printf("largeA = %c \n", largeA);
  printf("largeA = %d \n", largeA); // largeA = 65

  printf("smallA = %c \n", smallA);
  printf("smallA = %d \n", smallA); // smallA = 97
}

char 에 문자를 저장할 때는 문자 자체를 저장하는 것이 아닌,
ASCII 코드표에 따라 문자에 대응하는 숫자를 저장한다.

- 문자 출력 서식 지정자
%c : 문자로 출력. char 타입. 크기가 더 큰 정수형 변수에 담아서도 사용 가능.
해당 숫자에 대응하는 문자를 출력.

오버플로우와 언더플로우

오버플로우

int 형 데이터에 담을 수 있는 수의 범위는 다음과 같다

자료형 크기 범위
int 4바이트 -2,147,483,648 ~ 2,147,483,647

int 형 데이터에 담을 수 있는 값중 가장 큰 값은
2,147,483,647 이다. 만약 다음과 같은 상황에서는 어떻게 될까?

#include <stdio.h>

main() {
  int a = 2,147,483,647 + 1; // 범위를 벗어남
  printf("%d \n",a);
}

다음 처럼 해당 데이터 타입이 담을 수 있는 수의 최대값을
벗어나는 연산이 일어났을 경우를 오버플로우라고 한다.

언더플로우

#include <stdio.h>

main() {
  int a = -2,147,483,648 - 1; // 범위를 벗어남
  printf("%d \n",a);
}

반대로 데이터 타입이 다을 수 있는 수의 최소값을 벗어나는
연산이 일어났을 경우를 언더플로우라고 한다.

태그:

업데이트:

댓글남기기