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);
}
반대로 데이터 타입이 다을 수 있는 수의 최소값을 벗어나는
연산이 일어났을 경우를 언더플로우
라고 한다.
댓글남기기