안녕하세요
오늘 C언어에 대해서 알아볼 것은 변수와 자료형 입니다!
1. 변수
변수라는 개념이 생소한 경우, 상자를 들어 생각하시면 이해하기 쉽습니다.
먼저 C언어에서 변수의 선언은 다음과 같습니다.
(자료형) (변수이름);
예를 들어 a라는 이름의 변수를 선언하려면 다음 코드와 같습니다.
int a;
'int a;' 라는 코드는 a라는 이름의 상자를 만든다! 정도로 생각해주시면 되겠습니다.
또 변수의 초기화라는 것이 있는데, 이는 상자를 만들고 처음으로 그 상자에 무언가를 넣는것을 의미합니다.
C언어에서 변수의 초기화는 다음과 같습니다.
- (자료형) (변수이름) = (값);
- (자료형) (변수이름);
(변수이름) = (값);
이때 변수의 이름은 영어문자, 숫자, 언더바(_)만 가능합니다
또 숫자로 시작하는 경우도 불가능합니다
ex) 가능 -> count, ab123, de_acel
불가능 -> 123did, adfe-23, hello!
아까 선언했던 a라는 변수를 가지고 코드를 다시 작성해보면,
int a = 5;
혹은
int a;
a = 5;
이렇게 나타낼 수 있습니다.
변수를 선언 및 초기화 시킨 후에도 변수의 값을 변경할 수 있습니다.
이를 변수의 할당(대입)이라고 하는데요, C언어에서 변수의 할당은 다음과 같은방법으로 가능합니다.
(변수이름) = (값);
아까 선언한 a라는 변수의 값을 10으로 바꾸고 싶다면,
a = 10;
이렇게 코드를 작성하면 됩니다.
코드를 통해 위 과정을 살펴보죠
#include <stdio.h>
int main()
{
int a;
a = 5;
printf("a = %d\n", a);
a = 10;
printf("a = %d\n", a);
return 0;
}
위 코드의 실행결과는 다음과 같습니다.
맨 처음 int a;로 변수 a를 생성한 후
a = 5;로 변수 a에다가 5을 할당했습니다.
그 후 값을 출력해 확인한 뒤 다시 a = 10;을 통해 변수 a에다가 10을 할당했습니다.
이렇듯 변수는 생성한 뒤 여러 번 그 값을 바꿀 수 있습니다.
출력 함수인 printf에 관해선 Chapter 4. C언어의 입출력에서 다루도록 하겠습니다.
위에서 변수를 생성하고 값을 넣을 때 상자에 비유하여 설명했는데, 컴퓨터 안에서 이 상자에 해당하는 것이 메모리 공간과 메모리 주소입니다.
우리가 변수를 생성하게 되면, 컴퓨터는 생성된 변수를 특정 메모리 공간에 넣습니다.
다음 코드를 통해서 a라는 변수를 생성 후 그 메모리 주소값을 출력해봅시다.
#include <stdio.h>
int main()
{
int a = 5;
printf("%x",&a);
return 0;
}
복잡한 값이 나오는데, 이 값이 바로 a변수의 메모리 주소 값입니다. 따라서 위의 상자 예시를 다시 나타내면 다음과 같습니다.
2. 자료형
변수의 선언에서 변수이름 앞에 붙었던 자료형에 대해 알아보겠습니다.
자료형은 그 변수가 어떤 용도의 상자로 쓰일지 정하는 것과 같습니다.
예시 코드int a; 에서 int는 a라는 상자가 integer 즉, 정수만을 담는 상자라는 것을 의미합니다.
선언된 a변수에는 정수(1,2,3)만이 할당될 수 있고 문자(a, b, c),소수(3.141592...)는 할당될 수 없습니다.
자료형은 int 외에도 float, char 등이 있고 각 자료형은 필요한 바이트의 크기와 제한된 범위를 가지고 있습니다.
이를 표를 통해 정리해보겠습니다.
자료형 | 크기(Byte) | 범위 |
char | 1 | -128 ~ 127 |
short | 2 | -32,768 ~ 32,767 |
(signed) int | 4 | -2,147,483,648 ~2,147,483,647 |
unsigned int | 4 | 0 ~ 4,294,967,295 |
long long int | 4 | -9,223,372,036,854,775,808 ~9,223,372,036,854,775,807 |
float | 4 | -3.4E+38 ~3.4E+38 |
double | 8 | -1.7E+308 ~ 1.7E+308 |
long double | 8~ |
표에서 unsigned int라는 것이 등장하는데요, 이는 0과 양의 정수만을 담는다는 것을 의미하며 줄어든 음의 정수 범위만큼 양의 정수 범위가 늘어납니다. 실질적으로는 범위가 두 배가 된 것이죠.
int와 signed int는 같은 자료형이며 signed는 생략이 가능합니다.
위 자료형들의 크기를 코드를 통해 확인해보겠습니다
자료형의 크기는 sizeof 함수를 써서 sizeof(자료형)형식으로 작성하여 값을 반환하면 됩니다. sizeof 함수는 stdio.h 헤더 파일에 포함되어 있습니다.
#include <stdio.h>
int main()
{
printf("char 크기 = %d\n", sizeof(char));
printf("short 크기 = %d\n", sizeof(short));
printf("int 크기 = %d\n", sizeof(int));
printf("long int 크기 = %d\n", sizeof(long int));
printf("float 크기 = %d\n", sizeof(float));
printf("double 크기 = %d\n", sizeof(double));
printf("long double 크기 = %d\n", sizeof(long double));
return 0;
}
코드의 실행결과는 다음과 같습니다.
3. 입출력 형식
입출력에 관해서는 Chapter 4. C언어의 입출력에서 배울 겁니다.
그전에 위에서 나온 자료형들의 입출력 형식에 대해 간단하게 정리하려고 합니다.
종류 | 자료형 | 형식 |
정수 | int,short | %d |
long int | %ld | |
long long int | %lld | |
unsigned int | %u | |
실수 | float | %f |
double | %lf | |
long double | %Lf | |
문자 | char | %c |
long이 붙으면 l, unsigned이 붙으면 u 등의 특징이 있습니다.
표에 나온 것 이외에도 다양한 형식이 있으나, 이는 추후에 다루도록 하겠습니다.
이상으로 글을 마치겠습니다.
글의 오류가 있을 시 지적해주시면 감사하겠습니다!
'언어 > C,C++' 카테고리의 다른 글
C Language Chapter 6. 반복문 (0) | 2020.08.03 |
---|---|
C language Chapter 5. C언어의 조건문(+switch문) (0) | 2020.04.17 |
C language Chapter 4. C언어의 입출력 (0) | 2020.03.17 |
C language Chapter 2. C언어 개발환경 (2) | 2020.01.09 |
C language Chapter 1. C언어를 알아보자! (0) | 2019.12.31 |