본문 바로가기
쿤즈 Dev/C

[C언어] 변수 (Variables) vs 상수 (Constraints)

by Koonz:) 2020. 8. 2.
728x90

이번 포스팅에서는 변수 (variables) 와 상수 (constraints) 에 대해서 알아보도록 하겠습니다. 변수와 상수는 이전 포스팅인 키워드와 식별자에도 포함되는 내용입니다. 키워드와 식별자 중에서 식별자에 해당하는 내용이므로 모르신다면 한번 읽어보시고 오는것을 권해드립니다.^^

2020/07/31 - [쿤즈 Dev/C] - [C언어] 키워드와 식별자. 반드시 필요한 문자들

 

 

변수 Variables

변수는 변하는 수입니다. 모든 프로그래밍에서는 변수가 필요합니다. 변수가 필요한 이유는 메모리에 저장하고자 하는 공간을 할당 그곳의 이름을 변수라 합니다. 따라서 변수에는 우리가 프로그래밍 하면서 임시로 저장하는 모든 값들이 다 저장되어 있습니다. 따라서 변수의 이름은 식별자이기 때문에 모두 달라야 합니다. 그리고 임시 저장이기 때문에 교체도 가능합니다. 예를들어서 보겠습니다.

 

int number = 3;

 

여기에 int 는 키워드, number 는 식별자 입니다. 그리고 이때 식별자인 number 는 앞으로 변수라 부르게 됩니다. 이 변수에 3을 저장한다는 내용입니다. 저장하는 곳은 실제로 메모리입니다. 익숙해지기 위해 메모리라는 말을 앞으로도 쭉~ 사용할 예정입니다. number 변수에 3을 저장하고 이 값은 메모리에 저장하며 메모리 주소를 number에 매칭합니다.

 

 

하지만 우리는 이 메모리 주소를 다 외울수 없기에 변수를 만들고 우리가 아는 단어로 만들어서 사용합니다.

위에서 변수의 내용을 바꿀수 있다고 했죠? 변수의 내용은 아래와 같이 변경할 수 있습니다.

 

int number = 3;

...

number = 10;

 

키워드와 함께 사용된 변수는 선언, 그리고 재사용할 때는 키워드 없이 변수명만 이용합니다. 즉, 키워드는 선언할 경우에만 사용하며 C언어의 경우 프로그래밍 가장 위쪽에 위치합니다. 이후 프로그래밍을 실제로 할때 조금 더 자세하게 알아보겠습니다.

 


변수에 저장할 수 있는 값

그럼 변수는 어떤 값들을 저장할 수 있을까요? 변수에 저장할 수 있는 대표적인 값들은 총 5가지 입니다.

 

  • 정수 Integer
  • 실수 Floating point
  • 문자 Character
  • 문자열 String
  • 이스케이프 시퀀스 Escape Sequences

이러한 종류들은 앞서 말씀드린 키워드에 의해서 변수의 성격이 정해집니다. 그리고 이러한 키워드를 지금부터는 자료형이라 부르도록 하겠습니다. 그럼 각각의 자료형이 어떤 수를 뜻하지는 알아보겠습니다.

 

정수 Integer

정수는 음의정수, 0, 양의정수를 말합니다. 중, 고등학교 수학때 들어본 이후에 잘 들어보지 않은 이야기죠?ㅎㅎ 양의 정수는 자연수라 의미합니다. 그리고 변수에 저장할 때에는 우리가 알아보기 쉬운 10진수를 이용합니다. 또한 암호화 프로그래밍을 할 때에는 보통 16진수도 많이 사용하기 때문에 진수변환에 익숙해질 필요는 있습니다.^^

 

10진수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (10개 숫자)

16진수 : 0x00, 0x01, 0x02, ... , 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F (10개 숫자 + 6개 문자)

 

여기서 진수변환을 이야기 할 것은 아니지만 10진수는 9 다음에 10이 되었을때 자리올림이 발생해서 10이 되는 것입니다. 마찬가지로 16진수는 16이 되었을때 자리올림이 일어나서 0x10 이 됩니다. 다만 10진수 10을 표현할 방법이 없기 때문에 알파벳 A 부터 알파벳 F 까지 사용하는 것이 16진수입니다.

 

실수 Floating-point

실수는 우리가 보통 알고 있는 정수에 소수까지 더한 수를 말합니다. 따라서 음의실수, 0, 양의실수 모두를 포함하여 표현하고 변수에 저장할 수 있습니다. 실수의 대표적인 예는 다음과 같습니다.

 

실수 : -10, -23.2, -1.324, 0, 3, 3.141592, ...

 

실수를 변수에 저장할 때에도 10진수를 사용해서 저장할 수 있습니다.

 

문자 Character

프로그래밍에서 문자는 문자 1개를 의미합니다. 보통은 영문자, 특수문자, 숫자 각각 1개씩만 저장했을때 문자라 합니다. 여기서 숫자는 정수 또는 실수에 저장했는데 문자에도 포함되어 있죠? 이는 문자로서의 숫자와 실제 숫자는 컴퓨터에서 다르게 표현하고 저장하기 때문입니다. 그럼 문자 1개를 표현하는 방법을 보로독 하겠습니다.

 

문자 : 'a', 'A', '1', '@', '10', '{', ...

 

문자를 표현할 때에는 홑따옴표(')를 사용해서 변수에 저장합니다. 이렇게 해야 문자 1개로 인식하게됩니다. 자세한 프로그래밍은 뒤에서 다시 한번 다루도록 하겠습니다. :D

 

문자열 String

C 프로그래밍에서 문자열을 표현하는 키워드는 따로 존재하지 않습니다. 문자열은 배열이라는 개념으로 표현을 합니다. 하지만 이것이 문자열이라는 의미를 줄 수 있도록 사용하는 표현방법이 있습니다.

문자열 : "Apple", "Microsoft", "Amazon", ...

 

위와같이 겹따옴포(")를 이용해서 저장하면 변수에는 문자열이라는 의미가 됩니다. 사실 문자 배열이라는 의미가 더 정확합니다. 배열은 하나의 자료형의 값이 여러개 모여있는것을 의미합니다. 이 역시 또 등장할테니 지금은 이런게 있다 정도만 아셔도 됩니다 ^^

 

이스케이프 시퀀스 Escape Sequences

표현할 수 있는 값중에 이스케이프 시퀀스라는 것이 있습니다. 이는 입력할 수 없거나 줄바꿈, 탭문자 같은 문자를 표현하기 위해서 조합된 문자를 의미합니다. 어떤것들이 있는 보도록 하겠습니다.

이스케이프 시퀀스 의미 이스케이프 시퀀스 의미
\0 NULL 문자 \? 물음표
\" 겹따옴표 \' 홑따옴표
\\ 역슬러시 \v 세로탭
\t 가로탭 \r Return
\n 줄바꿈 \b 백스페이스

 


상수 Constraints

 

상수는 변수와 선언하는 방법과 사용법이 동일합니다. 다만 한번 정해진 자료형과 값은 변경할 수 없습니다. 즉, 상수는 프로그래밍이 시작될때부터 끝날때까지 같은 값을 가지는 변수를 의미합니다.

 

 

상수는 변수와 선언이 동일하지만 자료형 앞에 const 라는 값을 먼저 붙여줍니다. 예를 들어서 선언하는 방법을 보겠습니다.

int number = 3;
const double PI = 3.141592;

여기서 number 는 정수형 자료형을 가진 변수입니다. 이와 달리 PI 는 실수형 자료형을 가진 상수입니다. 따라서 변수는 프로그래밍 중간에 값이 변경될 수 있지만 PI 는 프로그래밍이 종료될때까지 변하지 않는 값이 되는 것입니다.

 


오늘은 변수와 상수에 대해서 알아보았습니다. 이 개념은 C프로그래밍 뿐만 아니라 모든 프로그래밍 언어에서 사용되는 개념입니다. 이들을 사용하지 않고는 프로그래밍을 할 수 없는 기본적인 개념이기 때문에 아주 쉬울수 있지만 기억하고 넘어가야 하는 내용입니다. :D

댓글