4. C 변수와 자료형

2022. 2. 16. 14:06C

변수의 사전적 의미는 "변할 수 있는 수" 입니다. 

하지만 코딩에서 변수는 데이터 값을 담는 상자라고 보면 편합니다. 

 

C 언어에서는 서로 다른 키워드로 표현되는 여러 가지 종류의 변수가 있습니다. 

이 종류를 자료형이라고 합니다. 

 

다음은 C언어에서 사용되는 자료형입니다. 

몇가지 자료형은 잘 쓰지도 않아서 이런게 있구나 알아만 두시면 됩니다. 

주로 쓰는 자료형은 굵은 글씨로 표시했습니다. 

자료형 명칭 크기 형식 약자 값의 표현범위
정수형 int 4바이트 정수 INTeger -2,147,483,648 이상
+2,147,483,647 이하
short 2바이트 정수 SHORT
integer
-32,768 이상 +32,767 이하
long 4바이트 정수 LONG
integer
-2,147,483,648 이상
+2,147,483,647 이하
long long 8바이트 정수 LONG
LONG
integer
-9,223,372,036,854,775,808 이상 
+9,223,372,036,854,775,807 이하
char 1바이트 문자 CHARacter -128 이상 +127 이하
실수형 float 4바이트 실수 (소수) FLOATing point ±3.4 x 10^-37 이상
±3.4 x 10^38 이하
double 8바이트 실수 (소수) DOUBLE floating point ±1.7 x 10^-307 이상
±1.7 x 10^308 이하
long double 8바이트 이상 실수 (소수) LONG
DOUBLE floating point
double 이상의 표현 범위

또한, 자료형 앞에 unsigned가 붙으면 부호가 없다는 뜻으로, unsigned int 는 부호가 없는 정수이므로 0 이상 +4,294,967,294 이하의 표현범위를 가집니다. 

변수 선언하기

변수를 선언하려면 (만드려면) 자료형과 이름을 지정하고 값을 줘야 합니다. 

자료형 변수이름 = 값;

 

그러면 정수를 담을 수 있는 변수를 하나 만들어 봅시다. 

int a = 1;

a 라는 정수형 변수에 1이라는 값이 들어갔습니다. 

다음과 같이 변수를 먼저 선언하고 나중에 그 값을 변경해 줄 수도 있습니다. 

int a;
a = 1;

이 때, 그 값을 변경하면 원래의 값은 새로 변경한 값으로 덮어 씌워집니다. (즉, 원래의 값은 없어집니다. )

그래서 다음 코드에서의 a의 값은 2 입니다. 

int a = 1;
a = 2;

 

그러면, 다음 코드에서 a의 값은 무엇이 될까요?

int a;

현재 변수 a를 선언해주었으나 아무것도 안 들어있는 상태죠? 

이렇게 비었다는 값을 표현하는 것이 바로 NULL입니다. 

그래서 a 라는 변수를 선언했다가 그 값을 비우고 싶으면 다음과 같이 작성하면 됩니다.

int a = 1;
a = NULL;

변수 출력하기

그러면, 이렇게 생성되고 값을 지정해 준 변수를 출력하려면 어떻게 해야할까요?

다음과 같은 코드를 실행해봅시다:

int a = 1;

printf(a);

Python, Java와 같은 다른 몇몇 언어에서는 저런 식으로 출력 함수에 직접 변수 이름을 넣어서 변수를 출력합니다. 

하지만 C언어의 경우말이 달라집니다. 저렇게 하면 오류가 나죠. 

그래서 C언어에서 어떤 값을 출력하려면 형식 지정자라는 것에 대해 알아야합니다. 

 

형식 지정자는 printf() 함수에게 출력하려는 변수가 어떤 자료형인지를 알려줍니다. 형식 지정자는 %로 시작해서 뒤에 특정 문자가 붙습니다. 

또한, 형식 지정자는 문자열 취급이라서, 꼭 큰 따옴표 " " 사이에 써줘야 합니다. 

 

다음은 C언어에서의 형식 지정자 목록입니다

몇 가지 형식 지정자는 잘 쓰지 않아서 이런게 있구나 알아두시면 됩니다. 

자주 쓰는 형식 지정자는 굵은 글씨로 표시했습니다. 

형식 지정자 표현하는 것 대응하는 자료형 뜻하는 약자
%d 10진수 정수 int Decimal
%ld 10진수 정수 long Long Decimal
%f 실수 float Float
%lf 실수 double Long Float
%c 문자 char Character
%s 문자열 char[] String
%o 8진수 정수 int Octal
%x 16진수 정수 int heXadecimal
%p 주소값 void* Pointer
%u 부호 없는 10진수 정수 unsigned int Unsigned
%lu 부호 없는 10진수 정수 unsigned long Long Unsigned

변수의 연산

다음 강의인 연산자 강의에서 구체적으로 등장합니다. 

변수의 이름

모든 변수는 특별한 자신만의 이름을 지어 무슨 변수인지 쉽게 구별이 갈 수 있게 해야 합니다. 

//좋은 예
int studentsInClass = 30;

//나쁜 예
int SIC = 30;
//SIC가 정확히 무엇을 의미하는지 이해하기가 힘들어 추후 작업이나 공동 작업 때 혼돈의 카오스를 불러일으킬 수 있음

C언어에서 변수 이름을 정할 때의 규칙

  • 변수의 이름은 ASCII 내의 글자, 숫자 및 언더스코어 (Underscore, 일명 밑줄문자, '_' )를 사용할 수 있다.
  • 변수의 이름은 ASCII 내의 글자 또는 언더스코어로 시작해야 한다. 
  • 변수의 이름은 대소문자 구분이 있다. (studentsinclass와 studentsInClass는 다른 변수)
  • 변수의 이름은 공백 또는 특수문자(!, #, %, 한글, 일본어, 한자 등의 유니코드 문자)를 포함할 수 없다. 
  • int나 float 와 같은 C언어 키워드는 사용할 수 없다. 
변수 이름 짓는 팁
가장 많이 사용하는 변수 이름짓는 방법은 바로 Camel Casing 방법입니다. 
대소문자로 각 단어를 구분하는 방법인데, 대문자가 소문자 위로 삐쭉삐쭉 튀어나오는 모습이 마치 낙타의 혹 같다고 하여 붙여진 이름입니다. 
예를 들어, 영어 단어 "Is Button Pressed?" 는 C언어 변수 규칙에 따르면서도 보기 쉬운 Camel Casing 방법으로, 
"isButtonPressed" 가 됩니다. 

 

상수 (Constants)

상수는 변수와 반대되는 개념으로, 절대로 바뀌지 않는 수를 말합니다. 

만약 프로그램에서 당신 또는 다른 사람이 변수의 값을 변경하지 않았으면 할 때 사용하는 것입니다. 

상수를 선언하려면 변수 선언문 앞에 const 키워드만 붙여주면 됩니다. 

프로그램의 안전성과 보안을 위해서 만약 바뀌지 않을 값 같은 경우에는 꼭 값을 변수가 아닌 상수로 선언해야 합니다. 

 

다음은 상수 선언 구문입니다. 

const 자료형 상수이름 = 값;

상수는 변경될 수 없으므로 다음 코드를 실행하면 오류가 납니다. 

const float PI = 3.14159;
PI = 1.77245;
상수 이름 짓는 팁: 
상수라는 것을 표시하기 위해 많은 프로그래머들은 상수의 이름을 다음과 같이 대문자로 표기합니다. 
const float PERIMETER = 3.14159​

다음 강의에서는 연산자에 대해 알아보겠습니다. 

'C' 카테고리의 다른 글

6. C 조건문 (if, else, else if, switch)  (0) 2022.02.19
5. C 연산자  (0) 2022.02.17
3. C 출력 (글자 띄우기) - printf() 함수  (0) 2022.02.16
2. C의 문법  (0) 2022.02.16
1. C 시작하기  (0) 2022.02.16