본문 바로가기

프로그래밍/C & C++

[C] 2. C 언어의 자료형

1. C 언어의 자료형

자료형의 정의는 다음과 같다. "가상 메모리에 할당된 공간을 일정 크기로 구분해서 특정한 의미를 부여한 뒤 해석하는 것." 상당히 어려운 말로 설명되어있다. 아직은 이게 정확히 무슨 말인지 알 필요는 없을 것 같다. 간단히 자료형을 설명하면, C 언어에서 사용이 가능한 데이터(자료)의 종류라는 것이다. C 언어가 지원하는 자료형은 다음과 같다.

앞으로 우리가 주로 사용 할 자료형은, int, char, float, double 정도가 될 것이다. int는 주로 정수의 표현에 사용되는 자료형이며, char는 문자의 표현에 사용한다. float와 double은 소수의 표현에 사용한다. 이러한 자료형들은 크기나 표현 범위들이 다른데, 표로 그 차이를 알아보자.

이렇듯 크기와 표현 범위가 자료형에 따라 다른 것을 볼 수 있다. 따라서 우리가 자료형을 배우는 이유는, 프로그램을 설계하는데에 있어서 올바른 자료형을 선택해 메모리의 절약과 같은 효율성을 높이기 위해서이다. 위 표에서 자세히 보면, 앞서 char가 문자를 표현하는 자료형인데, 표현 범위는 숫자로 나타난다. 이는 컴퓨터에서 문자 또한 숫자를 이용해서 표현하기 때문인데, C 언어는 ASCII라는 표준을 사용해서 특정 문자를 숫자로 나타내고 있다. ASCII에 대한 부분은 다음 포스트에서 간단히 설명하려고 한다.

우리는 앞으로 프로그램에서 이러한 자료형을 사용해서 데이터나 객체를 선언하고, 사용할 것이다. 이러한 데이터와 객체를 구분하기 위해서는 이름이 필요하다. 그 이름을 식별자(Identifier)라고 하며, 몇가지 규칙이 존재한다.

1) 첫 글자는 영문자나 언더스코어('_')로 시작

2) 영문자, 숫자, 언더스코어로 구성

3) 처음 63글자만 구별 가능

4) Keyword는 사용할 수 없음

위와 같은 규칙을 가진다. Keyword로 사용할 수 없다는 의미는 C 언어에서 미리 사용하고 있는 단어들이 있다. 그것들을 예약어라고 하는데 이는 C언어에서 특별한 의미로 사용되는 단어로, 예를 들면 Int, break, return, for 등이 있다.

Examples.

 Valid Name

 Invalid Name

 a

 3user            // 숫자로 시작 불가능

 _Threads

 Student No    // space는 불가능

 StudentNumber

 int                // C 언어의 예약어



2. 변수(Variables)와 상수(Constants)

C 언어에서 특정 값을 저장하고, 프로그램에서 사용하기 위해서는 그 값이 저장될 공간이 필요하다. 즉, 어떤 값을 저장하고 싶다면, 우리는 프로그램을 작성하면서 컴퓨터에게 어떠한 자료형인지 얼마만큼의 공간이 필요한지, 그 이름은 무엇으로 할 것인지 알려주어야 한다. 이것을 변수의 선언이라고 하는데, 변수를 선언할 떄는 변수의 type과 변수의 이름을 써주면 된다. 아래 몇개의 예시를 보자.

1
2
3
4
5
6
bool  flag;
char  alphabet;
int  number;
float value;
double pi=3.14159;
char* str[100]; 
cs

이런 방식을 통해서 변수를 선언할 수 있다. 일반적으로 C 언어에서는 변수의 선언이 함수의 시작부분에 있어야하나, C11에서는 코드의 중간에서 변수 선언을 하더라도 에러가 발생하지 않는다. 변수를 선언했다면, 우리는 프로그램을 작성하면서, 선언한 변수의 이름을 통해서 변수가 저장된 공간에 접근할 수 있다. 변수는 기본적으로 선언과 동시에 '쓰레기 값(garbage)'를 가지고 있는데, 이 값은 의미가 없는 임의의 데이터이다. 쓰레기 값이 들어간 변수를 사용하는 경우에는 프로그램을 실행할 때, 우리가 의도한 대로 프로그램이 동작하지 않을 수 있다. 따라서 변수를 선언할 때, 초기화를 해주어야한다. 초기화 방식은 위의 double형의 pi 변수와 동일하게 해주면 된다. pi와 같은 것들은 선언과 동시에 초기화가 된다. 이외의 변수들은 프로그램을 작성하면서 초기화를 해주어야 할 것이다.

상수는 프로그램이 실행되면서 변하지 않는 값들을 말하는데, 상수로 선언한 데이터들은 프로그램 도중에 변경을 하고자하는 경우 에러가 발생할 것이다. 상수의 선언은 변수의 선언과 거의 동일하고, 앞에 const를 붙여주면 된다.

1
const double pi=3.14159
cs

위와 같은 식으로 선언해주면, 프로그램에서 'pi'라는 이름으로 상수를 사용할 수 있다.


C 언어에서 위와 같이 선언한 변수의 출력값을 알아보고자 한다면, printf 함수를 사용하는 경우, '형식문자'를 사용해야한다. 형식문자의 몇가지를 알아보면,

%c : char형 데이터 출력

%d : int형 데이터 출력

%f : float형 데이터 출력

%s : 문자열 출력

등이 있다. 이외에도 다양한 형식문자를 지원한다. 사용하는 법은 다음과 같다.

1
2
3
float data=6.5940;
printf("%d",50);
printf("%f",data);
cs

3. 프로그램 실습

위에 배운 내용으로 간단한 실습을 진행해보자.

x라는 int형 변수를 선언하고, y와 z라는 float형 변수를 선언하자. x는 10을, y는 5.5의 값을 가진다. 그리고, z는 x와 y의 곱의 값을 가진다. 이때의 z를 출력해보자.

프로그램의 결과는 아래와 같다.



반응형