본문 바로가기

Developing/C 언어

[C언어 강의 - 02] 상수와 변수

대부분의 프로그램은 데이터를 이용하는데, 데이터는 상수와 변수로 구분할 수 있다.

상수란 프로그램이 실행되는 동안 변하지 않는 고정적인 값이고,

변수란 프로그램이 실행되는 동안 값을 저장하는 일종의 공간으로 언제든지 변경될 수 있다.

 

 

상수

 printf ("Hello World");

 a = 3 ;

위와 같은 상황에서 우리는 "Hello World"와 숫자 "3"을 상수라 한다. 상수의 종류에는 다음과 같은 것들이 있다.

 

상수 

예 

정수 

21, 034, 0xAC 

실수 

3.14,   0.7e3

문자 

'A', 'C', 'f', 'z' 

문자열 

"Hello World", "안녕하세요" 

*  정수를 보면 034, 0xAC처럼 일반적인 숫자처럼 보이지 않는 정수들이 있다. 이런 정수는 8진수 16진수를 의미한다. 즉, 8진수를 표현하기 위해서는 8진수 숫자 앞에

   숫자(0)을 붙이고, 16진수를 표현하기 위해서는 16진수 숫자/문자 앞에 ( 0x ) 를 붙여 표현한다 

 

   실수는 소수점 표현과 지수 표현으로 나뉘는데, 3.14 와 같은 형태를 소수점 표현이라 하고, 0.7e3 와 같은 형태를 지수 표현이라 한다.

 

   문자는 'A'와 같이 짝은따옴표 (') 사이에 문자를 위치시켜 표현한다. 문자는 반드시 한글자로 이루어져있고 '7' 처럼 숫자 7를 짝은따옴표로 감싸 표현할 경우

   정수가 아닌 문자로 인식된다.

 

   문자열은 "Hello World"와 같이 큰따옴표 (") 사이에 문자들을 나열하여 표현한다. 즉, " 7 "은 문자열이고 ' 7 '은 문자이며 7.0은 실수이며 7은 정수이다

 

 

 

상수를 표현하는 프로그램의 일반적인 형태는 다음과 같다.

 

05 행에서 %d 라는 것은 뒤에 나올 숫자 (123)을 정수 형태로 표현하라는 의미이다.

07 행에서 %f 라는 것은 뒤에 나올 숫자 (3.140000000000)을 실수 형태로 표현하라는 의미이다.

08 행에서 %.2f 라는 것은 뒤에 나올 숫자 (3.14123)를 소숫점 2자리까지 출력(3.14) 하라는 의미이다.

10 행에서 %c 라는 것은 뒤에 나올 문자('C')를 문자 형태로 표현하라는 의미이다.

12 행에서 %s 라는 것은 뒤에 나올 문자열("Hello World')을 문자열 형태로 표현하라는 의미이다.

 

실행 결과는 아래와 같다. 

 

  

 

 

 

변수

변수는 프로그램이 실행되는 동안 데이터를 저장하는 일종의 공간으로써 언제나 새로운 값을 저장할 수 있다.

변수를 사용하기 위해서는 프로그램에서 어떤 변수를 사용할것인지 미리 알려야 하는데, 이런 역활을 하는 부분이 변수 선언이다.

일반적으로 변수 선언은 main 함수 시작 부분에 위치해야 한다. 물론 중간에서 선언해도 되지만 가독성이 떨어지기 때문에 권장하지 않는 방법이다.

그래도 변수를 중간에서 선언할 경우가 있으면 반드시 해당 변수가 사용되기 이전에 선언해야 한다.

(이해가 잘 되지 않으면 그냥 main 함수 시작 부분에 선언하는 버릇을 두는 것이 좋다)

변수 선언의 형식은 다음과 같다.

데이터_타입   변수_이름 ;

int               a       ;

 

데이터_타입   변수_이름1, 변수_이름2, 변수_이름3 ;

int                q1,            q2,            q3        ;

위의 초록색 박스에서 첫 번째 부분에서 생성된 변수의 이름은 a이고  int 데이터 타입의 데이터를 저장할 수 있다. ( int 데이터 타입은 정수를 의미한다)

두 번쨰 부분에서 생성된 변수들의 이름은 q1, q2, q3 이고 이 또한  int 데이터 타입의 데이터를 저장할 수 있다.

(즉 같은 데이터 타입을 가지는 여러 변수를 선언하려면 변수사이를 ","로 구분한면 된다. 굳이 여러줄로 나눠 쓸 필요가 없다.)

 

변수를 선언했으면 변수에 데이터를 저장해야 하는데, 데이터를 저장하는 형식은 다음과 같다.

 a = 11 ;

q1 = 10 ;

q2 = 15 ;

q3 = 20 ;

이 부분에서 프로그래밍 언어를 처음 접하는 사람들이 쉽게 오해할 수 있는 부분이 바로 "=" 표시이다. 일반적으로 "=" 표시는 같다 라는 의미이다.

즉, "=" 표시를 '같다'라고 해석하면 a는 11, q1은 10 ... 이런식으로 이해하게 되는데 프로그래밍에서는 잘못된 이해이다.

대부분의 프로그래밍 언어에서 변수 선언시 사용되는 "=" 표시를 '대입 연산자'라고 칭한다.

즉, '같다'라고 해석하는 것이 아니라  숫자 11을 변수 a에 저장(대입)한다, 숫자 10을 변수 q1에 저장한다... 이런식으로 해석해야 맞는 말이다.

 

변수의 선언, 대입, 덧셈 연산, 출력하는 프로그램의 형태를 보자.

 

05~07 행에서 int 타입의 변수 3개(a, b, result)를 선언한다. 물론 08행  변수 선언 방법이 추천하는 방법이다.

10 행에서 숫자 7를 변수 a에 대입한다.

11 행에서 숫자 5를 변수 b에 대입한다.

12 행에서 변수 a와 변수 b를 더한 값을 변수 result에 대입한다.

 

실행 결과는 다음과 같다.

 

변수 선언과 동시에 데이터 대입하는 방법

위의 사진들에서는 변수 선언를 먼저하고 나중에 데이터를 대입하는 방법을 사용하고 있다. 

그러나 변수를 선언함과 동시에 데이터를 대입해야 하는 경우도 생기기 마련인데 이 때는 다음과 같은 방법을 사용한다.

05 행에서 변수 a, b, result를 선언함과 동시에 각각 7, 5, a+b 라는 데이터 값을 대입하고 있다.

 

 

 

 

변수를 만드는 규칙

변수 이름은 프로그래머가 무작정 만드는 것이 아니라, 몇 가지 규칙을 따르면서 만들어야 한다.

규칙 01. 변수 이름에 사용할 수 있는 문자는 영대문자, 영소문자, 수치 문자, 밑줄(_) 문자이다.

규칙 02. 변수 이름의 첫 번째 문자는 반드시 영대문자, 영소문자, 밑줄 이어야 한다.

규칙 03. 예약어를 변수 이름으로 할 수 없다.

* 예약어란 int, float, char, double, printf, scanf, if, while 등 C언어에서 사용하기 위해 미리 정해진 단어들을 의미한다.

 

다음의 표를 보며 해당 변수의 사용 가능 여부를 알아보자.

변수 이름

사용 가능 여부

사용 불가시 이유

t&c

불가

& 문자는 변수 이름에 사용할 수 없다.

u-n

불가

- 문자는 변수 이름에 사용할 수 있다.

u_n

가능

None

이름

불가

한글은 변수 이름에 사용할 수 없다.

name

가능

None

70name

불가

수치 문자가 첫 번째 문자가 될 수 없다.

_user

가능

None

while

불가

while은 반복문을 의미하는 예약어 이다.