본문 바로가기

C언어_VisualStudio

#6-1 변수(Variable)_선언, 초기화, 위치

오늘은 변수에 대해 알아보자. :-)

 

  변수(variable)는 C프로그램의 중요한 구성 요소이다. 값을 저장하기 위한 목적으로 사용된다. 저장된 값은 변경이 이루어지기 전까지 계속 유지된다. 변수의 값이 바뀌면, 이전의 값은 지워지고 새로운 값이 저장된다. 변수를 사용하려면 선언을 해야 한다. 선언과 동시에 값을 저장할 수 있다. 이를 초기화(initialization)라고 한다. 

 

  다음은 변수 선언과 동시에 초기화 하는 예이다. 

#include <stdio.h>
int main(void){
    int x=0;
    return 0;
}

  x라는 이름의 변수를 int형으로 선언한 것이다. 값은 선언과 동시에 0으로 초기화한 것이다. 여기서 int는 integer의 약어로 정수를 의미한다. 즉 자료형이 정수라는 말이다. 

 

  다음은 변수에 값을 저장하고 변경하는 모습이다.

#include <stdio.h>
int main(void){
    int x=0;
    x=5;
    x=2+9;
    x=x+2;
    return 0;
}

  변수를 선언한 줄부터 내용을 보면 다음과 같다. 먼저, 변수 x를 선언과 동시에 0으로 초기화했다. 그다음 변수 x를 5로 변경하였다. 그다음 변수 x를 2+9의 결괏값으로 변경하였다. 그다음 변수 x에 2를 더한 값으로 변경하였다. 그렇다면 최종적으로 x에 저장된 값은 얼마일까? x : 0 -> 5 -> 2+9(11) -> +2(13) 이러한 과정을 거쳐서 x에는 13이 저장되어있다.

 

  변수의 값을 출력하려면 출력함수인 printf()를 사용하면 된다. printf() 함수의 문법을 보면 printf("형식지정자", 변수)이다. 

# include <stdio.h>
int main(void){
    int x=20;
    printf("%d", x);
    return 0;
}

  여기서 %d는 형식 지정자이다. 변수 x의 값(20)이 %d의 위치에 출력된다. d는 10진수(decimal)의 의미이다.

 

  예제1) 변수 x, y, z를 선언하고 각각 초기화해보자. 이때 한 줄씩 변수를 선언하고 초기화할 수도 있고 자료형이 같으면 한 줄에 선언하고 초기화할 수도 있다. 이때, 변수들은 콤마(,)로 구분한다. 

//콤마로 구분하여 한줄에 선언
    int x=0, y=0, z=0;

//한줄에 하나씩 선언
    int x=0;
    int y=0;
    int z=0;

  예제2) x에 11을 대입하고, y에는 22를 대입해보자.

    x=11;
    y=22;

  예제3) z에 x와 y의 합을 대입하고, 세 변수를 모두 출력해보자.

    z=x+y;
    printf("x=%d, y=%d, z=%d", x, y, z);

 

  예제들을 합치면 다음과 같다.

# include <stdio.h>
int main(void){
    int x=0, y=0, z=0;
    x=11;
    y=22;
    z=x+y;
    printf("x=%d, y=%d, z=%d", x, y, z);
    return 0;
}

 

  변수의 이름은 중복으로 선언할 수 없으니 참고하자. 각각의 변수들은 서로 이름이 달라야 하며, 같은 종류의 것이라면 숫자 등을 붙여서 구분하면 된다. ex) x1, x2

 

  변수는 다음을 참고하여 작명해야 한다.

  1. 변수의 이름은 알파벳, 숫자, 언더바(_)로 구성된다.
  2. 대소문자를 구분한다.
  3. 변수의 이름은 숫자로 시작할 수 없다.
  4. C에서 이미 예약해 놓은 단어를 사용할 수 없다.
  5. 공백이 포함될 수 없다

  C에서 이미 예약해 놓은 단어(예약어)들은 다음같은 것들이 있다.

  • _Bool
  • _Complex
  • _Imaginary
  • auto
  • break
  • case
  • char
  • int
  • do
  • double
  • if
  • else
  • float
  • return
  • while
  • void
  • switch
  • ....

 

  변수의 이름을 정할 때의 팁이 몇가지 있다. 변수의 이름을 정할 때 그 변수가 나타내는 의미를 지니는 이름을 정하는 것이 좋다. 예를 들어 나이를 저장하는 변수의 이름을 정한다고 가정해보자. a / age 이렇게 변수 이름이 두 개 있을 때 어느 쪽이 나이라는 의미를 가진 변수라는 것을 직관적으로 이해하기 쉬울까? 열이면 열 후자(age)가 더 이해하기 쉽다고 생각할 것이다. 이런 식으로 의미를 가진 단어로 부여하는 것이 좋다. 그리고 보통 변수 이름은 소문자를 많이 사용한다.

 

  변수를 선언할 경우 제일 첫 줄에 적어주어야 한다. 왜냐하면 코드를 읽어낼 때 처음부터 읽기 때문에 반드시 변수가 사용되기 전에 선언하는 문장이 있어야 한다. 예를들어 아래와 같은 경우 어떻게 되는지 보자.

#include <stdio.h>
int main(void) {
    a = 10;
    int a = 0;
    return 0;
}

변수가 선언되지 않았다는 메세지와 빌드 실패가 된다.

  따라서 변수의 위치가 매우 중요하다는 것을 알 수 있다. 변수는 반드시 반드시 반드시!!! 첫 줄에 선언해주어야 한다. 

 

  또한, 변수를 초기화하지 않고 출력하려면 어떻게 될까?

#include <stdio.h>
int main(void) {
    int a;
    printf("%d", a);
    return 0;
}

초기화 되지 않았다는 문구가 뜨지만 빌드는 성공하였다. 그럼 실행도 될까??
변수 a가 초기화되지 않았다는 문구의 경고창이 뜬다.

  따라서 변수를 선언하고 초기화 하는 작업도 매우매우 중요하다!