C language Chapter 3. C언어의 변수와 자료형

안녕하세요

 

오늘 C언어에 대해서 알아볼 것은 변수와 자료형 입니다!

 

1. 변수

 

변수라는 개념이 생소한 경우, 상자를 들어 생각하시면 이해하기 쉽습니다.

 

먼저 C언어에서 변수의 선언은 다음과 같습니다.

 

(자료형) (변수이름);

 

예를 들어 a라는 이름의 변수를 선언하려면 다음 코드와 같습니다.

 

int a;

 

 

 

 

'int a;' 라는 코드는 a라는 이름의 상자를 만든다! 정도로 생각해주시면 되겠습니다.

 

 변수의 초기화라는 것이 있는데, 이는 상자를 만들고 처음으로  상자에 무언가를 넣는것을 의미합니다.

 

C언어에서 변수의 초기화는 다음과 같습니다.

 

  1. (자료형) (변수이름) = ();
  2. (자료형) (변수이름);
    (변수이름) = ();

이때 변수의 이름은 영어문자, 숫자, 언더바(_)만 가능합니다

 

또 숫자로 시작하는 경우도 불가능합니다

 

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 등의 특징이 있습니다.

 

표에 나온 것 이외에도 다양한 형식이 있으나, 이는 추후에 다루도록 하겠습니다.


 

이상으로 글을 마치겠습니다.

 

글의 오류가 있을  지적해주시면 감사하겠습니다!