(1) 자료형
자료형(data type)이란 저장되는 데이터의 종류에 따른 형태로, 저장되는 값의 종류와 범위에 따라 다르게 사용한다.
자료형 | 크기 (byte) |
범위 | ||
정수 | signed | 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 | ||
long long | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | ||
unsigned | unsigned short | 2 | 0 ~ 65,535 | |
unsigned int | 4 | 0 ~ 4,294,967,295 | ||
unsigned long | 4 | 0 ~ 4,294,967,295 | ||
unsigned long long | 8 | 0 ~ 18,446,744,073,709,551,615 | ||
문자 | signed | char | 1 | -128 ~ 127 |
unsigned | unsigned char | 1 | 0 ~ 255 |
자료형 | 크기 (byte) |
범위 | 유효 자리수 | |
실수 | float | 4 | -3.4 x 10^38 ~ 3.4 x 10^38 | 소수점 이하 6자리 |
double | 8 | -1.8 x 10^308 ~ 1.8 x 10^308 | 소수점 이하 15자리 | |
long double | 8 | -1.8 x 10^308 ~ 1.8 x 10^308 | 소수점 이하 15자리 |
자료형은 그 크기에 따라 나뉘며, 범위를 벗어난 값을 선언하면 정상적인 작동을 하지 못하게 된다.
또한, 부호의 유무 차이에 따라 unsigned를 붙이기도 한다.
각 자료형은 아래와 같이 선언할 수 있다.
#include <stdio.h>
int main() {
short a = -32768;
int b = -5;
long c = -1000000000;
long long d = 10000000000;
unsigned int e = 4294967295;
char f = a;
float g = 3.14;
double h = 3.14;
long double i = 1.2345678;
return 0;
}
(2) int와 long의 차이
위의 표를 보면 의문점이 생긴다.
int와 long은 서로 다른 자료형이지만 크기와 범위가 모두 완전히 동일해보이기 때문이다.
하지만 엄밀히 말하면 다른 타입이다.
C언어의 타입 정의에 의하면, int형은 CPU*의 레지스터와 동일한 크기를 가지는 타입이다.
레지스터란 CPU 내의 임시 기억 장소로, 핵심 목적은 데이터를 빠르게 CPU로 가져오는 것이다.
이러한 레지스터는 그 크기에 따라 CPU의 비트수를 정의한다.
레지스터가 16비트이면 16비트 컴퓨터, 32비트이면 32비트 컴퓨터인 것이다.
즉, int형은 CPU가 가장 효율적으로 다룰 수 있는 정수형으로 정의되어 있다.
따라서 int형의 실제 크기는 플랫폼에 따라 달라진다.
32비트 운영체제에서 int형은 32비트이며, 64비트는 int형이 64비트가 될 것이다.
반면 long형은 그 크기가 4바이트로 고정되어 있기에 어떠한 환경에서도 4바이트이다.
int형과 long형이 동일한 크기를 가지는 것은 32비트 플랫폼에서 뿐이며, 16비트와 64비트에서는 달라진다.
* CPU(Central Processing Unit)란 컴퓨터에서 기억, 해석, 연산, 제어라는 4대 주요 기능을 관할하는 중앙 처리 장치이다.
(3) 서식 지정자 (Format Specifier)
서식 지정자란 컴퓨터가 어떤 정보를 어떻게 해석할 것인지 지정해주는 것이다.
서식 지정자 | 출력 형태 |
%d, %i | 부호 有 10진 정수 |
%u | 부호 無 10진수 정수 |
%o | 부호 無 8진수 정수 |
%x | 부호 無 16진수 정수 / 알파벳 소문자 사용 |
%X | 부호 無 16진수 정수 / 알파벳 대문자 사용 |
%f, %F | 부호 有 10진수 실수 |
%e | 과학 계산용 표기 (소문자 e) |
%E | 과학 계산용 표기 (소문자 E) |
%g | %e와 %f 중 더 짧은 표현을 사용 |
%G | %E와 %f 중 더 짧은 표현을 사용 |
%a | 16진수와 2진수 지수 표기법을 사용한 실수로 해석 |
%A | %a와 동일. p를 영어 대문자 P로 변경 |
%c | 문자 |
%s | 문자열 |
%p | 포인터 |
%n | %n의 이전까지의 문자의 개수를 세어 반환 |
% % | % 부호 출력 |
🍉 참고
'Language > C' 카테고리의 다른 글
[C언어] 포인터와 구조체 (0) | 2024.04.16 |
---|---|
[C언어] 구조체 (2) | 2024.04.15 |
[C언어] 포인터 (0) | 2024.04.14 |
[C언어] 변수 (2) | 2024.04.14 |
[C언어] #include <stdio.h>란 (2) | 2024.04.12 |