자료형
우리가 맨 처음 알아볼 것은 '자료형' 입니다!
영어로는 'Data Type' 이라고 부릅니다.
자료형이란 컴퓨터 공학, 프로그래밍에서 쓰이는 용어로서,
'정수나 실수, 논리 자료형 등의 데이터를 식별할 수 있도록 해주는것' 이라고 할 수 있습니다.
C에서는 이 자료형이 일반적으로도 필요하고 메모리에 관해서도 필요합니다.
여기에서는 일반적인 자료형을 알아봅시다.
이름과 크기, 범위를 표로 정리해두었습니다.
자료형 | 자료형 이름 | 자료형 크기 | 자료형 범위 |
---|---|---|---|
정수형 | int | 4Byte (32Bit) | -2147483648 ~ 2147483647 |
short int | -32768 ~ 32767 | ||
long int | 4Byte (32Bit) | -2147483648 ~ 2147483647 | |
unsigned int | 4Byte (32Bit) | 0 ~ 4294967294 | |
unsigned short int | 2Byte (16Bit) | 0 ~ 65535 | |
실수형 | float | 4Byte (32Bit) | 3.4 x 10-38 ~ 3.4 x 1038 |
배정도형 실수형 | double | 8Byte (64Bit) | 1.7 x 10-308 ~ 1.7 x 10308 |
long double | 8Byte (64Bit) | 1.7 x 10-308 ~ 1.7 x 10308 | |
문자형 | char | 1Byte (8Bit) | 128 ~ 127 |
unsigned char | 1Byte (8Bit) | 0 ~ 255 |
우리가 자주 사용할 자료형은 int, float, double, char 정도가 있습니다.
자료의 크기는 실제로 변수를 지정했을 때 변수에 할당되는 크기를 의미합니다.
여러 분들이 정수와 실수의 차이를 궁금해하시는데 우선 특징으로 자료형 크기 차이가 있는데 이유는 실수형에 있습니다.
실수형은 부동소수점 방식을 이용하여 부호와 지수부, 가수부라는 영역을 이용해 정밀한 데이터를 얻어내기 위해 존재합니다.
1/1000 또는 그 이상의 값을 소수점의 마지막 자리까지의 정밀한 데이터를 얻어내기 위해 자료형의 크기가 커지게 됩니다.
만약 실수형의 데이터 저장 원리가 궁금하다면 해당 블로그를 참고해보시길 바랍니다. [블로그 링크]
요약하자면 수학에서도 마찬가지로 정수는 소수를 가지지 않고 실수는 소수를 가지는 자료형입니다.
자료의 범위는 Unsigned 와 signed에 차이가 있습니다.
Unsigned 는 부호가 없는 변수로서 정확하지는 않지만 아주 쉽게 설명하자면,
'음수부가 없고 양수부가 2배인 자료형' 이라고 할 수 있습니다.
우리는 자료형을 외울 필요는 없습니다. 아직은 메모리까지 관리할 부분은 아니니까요!
우리가 지금 배운 자료형은 변수라는 것을 사용할 때에 쓸 것입니다.
변수
그럼 변수라는 것은 무엇인가?
변수는 필수로 알아야 하는것이라고 해도 과언이 아닙니다. 변수는 뗄레야 뗄 수가 없습니다.
변수는 사실 간단합니다! 값이 변하는 수. 와 같은 뜻을 가지고있죠.
그렇지만, C 에서는 변수를 값이 변하는 수가 아닌 '데이터를 저장할 수 있는 공간' 이라고 이해하면 좋겠습니다.
'변수' 라는 작거나 큰 상자를 만들어서 '값' 이라는 물건을 넣는다고 생각을 하시면 됩니다.
변수의 선언
위에서 설명한 자료형을 이용해서 '**변수의 선언'** 을 할 수 있습니다.
이것이 최우선입니다. 변수의 선언은 C 코드 작성의 처음에 이루어져야합니다.
C 언어는 순차지향적 프로그래밍 언어이기 때문에 위에서 '이 변수를 사용할거야!' 라고 얘기(선언)를 해 주어야 합니다.
위에 선언이 되지 않고 함수들의 호출이 이루어지는 중간에 선언을 하게 되면 컴파일 에러가 일어납니다.
변수를 선언할 때에 변수의 이름을 직접 지정해주어야 하는데 이 변수의 이름은 자신이 직접 지정하는것입니다.
변수의 이름을 지정하는것으로 너무 고민하지 말아주셨으면 좋겠습니다.
그냥 물건을 넣을 수 있는 어느 상자를 구분할 수 있도록 이름을 적어놓는다는 개념으로 쉽게 이해 하셨으면 좋겠습니다.
오히려 이름이 길면 길수록 힘들어지는건 자신입니다.. 간략하지만 구분이 가능하게 이름을 지정하는것이 좋습니다.
// 그렇지 않다는 의견도 있는것 같았지만 기본적으론 변수는 위에 선언해주셔야 합니다.
변수의 선언은 이 전 게시글에서 말했던것처럼 역시 main함수 안에 선언해야합니다.
간단한 예제입니다.
변수의 선언방법
자료형 | 변수 이름 |
---|---|
int | num |
#include <stdio.h>
int main( )
{
int N; // 변수 N의 선언, 세미콜론 (;) 은 필수입니다!
float F;
double D;
char C;
return 0; // 프로그램 종료 또한 세미콜론은 필수입니다!
}
변수의 선언은 위와 같이
자료형과 변수 이름으로 선언할 수 있습니다.
되도록 변수 이름은 예제에 얽매이지 말고 본인이 헷갈리지 않을 정도에서 다르게 작성하길 권장드립니다.
세미콜론은 예외인 경우(for문 등)도 있지만 선언에 관해서는 항상 필수입니다!
변수의 초기화
자, 이렇게 선언한 변수는 어디에 어떻게 이용을 할까요?
따져보면 우리는 변수를 이용하는것이 아니라 저 변수 num이라는 상자 안에 들어있는 인자, 값을 이용합니다.
그럼 우선 변수 안에 값이 있어야겠죠?
자 손수 값을 넣어봅시다!
아래 예제를 따라해보세요! 이미 언급했던것은 제외하겠습니다.
int N = 10; // 정수형 변수 N을 선언하고 10으로 초기화한 모습입니다.
float F = 1.5; // 실수형 변수 F를 선언하고 1.5로 초기화한 모습입니다.
double D = 1.5; // 실수형 변수 D를 선언하고 1.5로 초기화한 모습입니다.
char C = 'A'; // 문자형 변수 C를 선언하고 A로 초기화한 모습입니다.
이것을 변수의 초기화라고 부릅니다.
위에서 선언한 num 이라는 변수 안에 10 이라는 값을 대입한것으로,
num 변수 안에는 10이 들어있다. 라는 느낌으로 이해하시면 되겠습니다.
형식지정자
변수의 호출에는 '**형식지정자'** 라는 것을 이용합니다.
형식지정자란? 자료형에 맞게 변수의 표현을 도와주는 문자입니다.아래는 형식 지정자 표입니다.
자료형 | 형식지정자 | 설명 |
---|---|---|
int | %d | 정수형 변수를 10진수로 표현합니다.(ex 1,2,3,4) |
%x | 정수형 변수를 16진수로 표현합니다.(ex 0x001001) | |
%o | 정수형 변수를 8진수로 표현합니다.(ex 7, 8, 10) | |
float | %f | float형 변수를 표현합니다.(ex 1.254) |
double | %lf | double형 변수를 표현합니다.(ex 1.254) |
char | %c | char형 문자를 표현합니다.(ex 'A') |
%s | char형 문자열을 표현합니다.(ex "Hello") | |
%d | char형 문자열을 아스키 코드의 숫자로 표현합니다.(ex A > 65) |
우리에게 필요한것만 표로 정리해보았습니다.자료형과 변수, 형식 지정자의 쓰임새를 알아봅시다.
변수의 호출
위에서 설명했듯이 변수를 선언한 뒤에는 변수를 사용해보아야겠죠?
변수를 사용하기위해 불러오는것, 이것을 '**변수의 호출'**이라고 합니다.
변수의 호출은 자료형과 형식 지정자에 의해서 이루어집니다.
우리는 간단히 변수를 호출해 출력하는 프로그램을 만들어봅시다.
공부를 한다 생각하고 아래와 같은 소스를 작성해봅니다.
#include <stdio.h>
int main( )
{
int N = 20; // 변수들을 초기화합니다.
float F = 0.5;
double D = 1.4;
char C = 'A'
char A = "ABC";
printf("%d \n", N); // %d 정수형 변수 N 출력
printf("%f \n", F); // %f 실수형 변수 F 출력
printf("%lf \n", D); // %lf 실수형 변수 D 출력
printf("%c \n", C); // %c 문자형 변수 C 출력
printf("%s \n\n", A); // %s 문자형 변수 A 출력
printf("[%d] [%f] [%lf] [%c] [%s]\n", N, F, D, C, A);
printf("[%0.3lf]\n", D);
return 0;
}
출력 결과
20
0.5
1.4
A
ABC
[20] [0.500000] [1.400000] [A] [ABC]
[1.400]
계속하려면 아무 키나 누르십시오 . . .
출력이 이렇게 되는 이유가 뭘까요?
마지막 printf 함수를 살펴보겠습니다.
형식 지정자와 변수는 순서가 같습니다.
'출력할 문자열의 첫번째가 정수형 변수를 10진수로 출력하는 형식지정자(%d)이고 문자열의 바깥의 첫번째 변수인 N을 호출한다.'라는 의미인데요.
역시 글보단 그림을 보는게 빠르겠습니다.
그림과 같이 형식 지정자와 변수는 순서대로 1대 1 대응을 하는 것을 보실 수 있습니다.
%d 는 N을,
%f 는 F를,
%lf 는 D를,
%c 는 C를,
%s 는 A를 순서대로 가리킵니다.
이와 같은 원리로 형식 지정자를 지정한 뒤에 같은 변수를 다시 호출할 수도 있습니다.
그럼 지금까지 배운것들로 문제를 몇개정도 풀어봅시다.
변수의 호출 예제
1. 정수형 변수 num을 선언하고 값을 100으로 초기화한 뒤 출력해보시오.
#include <stdio.h>
int main( )
{
int num = 100;
printf("%d \n", num);
return 0;
}
2. 실수형(float) 변수 flo를 선언하고 값을 1.5로 초기화한 뒤 3번 출력하시오.
#include <stdio.h>
int main( )
{
float flo = 1.5;
printf("%f %f %f \n", flo, flo, flo);
return 0;
}
3. 실수형(double) 변수 dob를 선언하고 값을 5.3으로 초기화한 뒤 소수점 첫째자리까지 출력하시오.
#include <stdio.h>
int main( )
{
double dou = 5.3;
printf("%0.1lf \n", dou);
return 0;
}
4. 정수형, 실수형, 문자형 변수와 형식지정자를 이용해 마음대로 초기화하여 순서를 섞어 출력해보시오.
#include <stdio.h>
int main( )
{
int A = 123;
float B = 1.234;
char C = 'A';
printf("%d %f %c \n", A, B, C);
return 0;
}
'Develop > C 언어' 카테고리의 다른 글
[4 -1] 연산자? - 산술연산자! (2) | 2015.09.13 |
---|---|
간단히 짚고 넘어가는 C언어 부분정리 (3) | 2015.09.11 |
[알아야 할것] 1. 올바른 변수명 (0) | 2015.09.10 |
[3] 표준 입력 함수 scanf (0) | 2015.09.09 |
[1] C언어의 기본, 표준 출력 함수 printf (3) | 2015.09.05 |