안녕하세요! 코딩하는 경제학도 쏘코입니다.

오늘은 C++ 내용 중에서도 가장 기초가 되는 변수에 대해서 알아보도록 하겠습니다.

 

목차


    출처 : https://www.educba.com/variables-in-c-plus-plus/

    0. 변수란?

    변수는 영어로 variable입니다. 한글(변)과 영어(vary)를 보시면 쉽게 알 수 있지만, 바꿀 수 있는 수가 바로 '변수' 입니다.

    이 변수의 반대는 const라는 이름을 가진 상수인데, 이 부분은 아래에서 설명드리도록 하겠습니다.

     

    변수는 다양한 종류를 가지고 있습니다. 숫자형태의 값(int, float)을 가질 수도 있고, 문자열(string) 혹은 문자(char) 형태의 값을 가질 수도 있습니다.

     

    또한 이 변수를 설명하면서 변수의 이름으로 사용할 수 없는 예약어나, 변수에 값을 할당하는 방법 등을 추가로 알아보겠습니다.


    1. 변수의 선언

    정수형 변수는 말 그대로 정수를 가진 변수입니다.

    또한 문자형 변수는 말 그대로 문자를 가진 변수입니다. 간단하죠?

     

    우선 변수를 선언하는 방법에 대해서 말하면, 앞에서 int main()을 선언할 때 main 앞에 int를 붙이는 것과 같은 방식으로 변수를 선언할 수 있습니다.

     

    int a = 0;

     

    위 말은 a라는 이름을 가진 int형 변수에 0을 할당하겠다는 말과 같은 말입니다.

    할당을 할 때에는 반드시 =의 앞에 변수가 오고, 뒤에는 값이 와야합니다.

    그리고 선언과 할당을 따로따로 해줄 수도 있습니다.

    변수를 만들고 할당을 하는 것을 "함수를 초기화한다"라고 말하기도 합니다.

     

    변수의 경우 동시에 여러 개를 선언할 수도 있고, 선언된 변수는 여러번 바꾸거나 이미 초기화 된 변수를 다른 변수에 할당하는 것도 가능합니다. 

     

    다만 변수를 선언할 때 주의해야할 점이 몇 가지 있습니다.

    변수의 이름을 식별자라고 부르는데, 이 식별자를 선언할 때 꼭 지켜야 할 점들이 있습니다.

    이 규칙은 변수 뿐만이 아닌 나중에 배울 함수의 이름, 클래스의 이름에도 동일하게 적용될 수 있습니다.

     

    - 식별자는 최소한 1글자 이상

    - 첫 번째 글자는 대문자, 소문자, _(underscore)만 사용 가능

    - 나머지 글자는 대문자, 소문자, _, 숫자까지 사용 가능

    - 대소문자는 구분하여 사용

    - 공백 사용 불가능

    - 예약어 사용 불가능

     

    여기서 예약어는, 이미 함수명으로 사용중이기 때문에 혼선을 빚지 않기 위해서 변수의 이름으로 사용하지 못하게 설정해 놓은 단어를 뜻합니다.

    아래 단어들은 나중에 하나하나 익혀나가게 될 것이니 지금은 굳이 외우지 않아도 됩니다.


    2. 정수/실수형 변수의 특징

    먼저 정수형 변수는 short int, int, long int, long long int 순으로 더 큰 메모리를 사용합니다.

    또한 unsigned short, unsigned, unsigned long, unsigned long long 순으로 더 큰 메모리를 사용합니다.

    unsigned가 붙으면 음이 아닌 정수만 들어가게 되고, 붙지 않으면 음수도 들어갈 수 있습니다. 하지만 메모리의 사용량은 같으므로 들어가는 수의 갯수는 동일합니다.

     

    이번엔 실수형 변수를 살펴보겠습니다. 실수에는 .이 들어갑니다. 우리가 생각하는 일반적인 정수와는 다르게 소숫점이 존재하죠. 그래서 Floating-point Type이라고도 불립니다.

     

    실수형 변수에도 타입에 따라 담을 수 있는 수의 갯수가 차이가 나는데, float, double, long double 순으로 늘어납니다.

    또한 선언할 때 숫자의 뒤에 f를 붙이면 float 형태의 수가 변수에 할당 됩니다. 그리고 지수표현법으로 작성한 수 역시 double형 변수에 할당할 수 있습니다.


    3. 상수(const)

    위에서 const에 대해 간략하게 넘어갔습니다.

    이 const는 변수와는 정 반대로 한번 선언하면 그 상태로 끝까지 가는 친구입니다.

    값이 변화하지 않는 경우, 혹은 변화해서는 안되는 경우에 사용하면 좋겠죠?

     


    4. 문자형 변수

    문자형 변수 역시 숫자와 같습니다. 대신 할당할 때에는 문자의 경우 ' ', 문자열의 경우 " "로 둘러쌓인 값이 들어가야 합니다.

    char은 1글자, string은 여러 글자를 담는 변수임을 기억해두면 좋습니다. 가 아니라 현실은 무조건 기억해야 합니다.

     

    여기서 char의 경우, 1글자를 담을 때 아스키 코드형태로 담습니다. 아스키코드는 문자들을 하나의 숫자(0~127)에 지정해두고, 그 값을 저장한다고 생각하시면 됩니다.

    아스키코드 표는 아래 사진으로 남겨두겠습니다.

    아스키코드표, 출처 : 교수님의 ppt

    또한, 문자의 특수한 형태로 \(역슬래시 혹은 원화 표시)를 사용한 예외표현을 사용합니다.

    대표적으로 줄넘김을 나타내는 \n이 있습니다. 아래 다양한 예를 사진으로 올립니다.

    그리고 문자열들에 숫자를 할당하는 enum이라는 타입도 존재합니다.

    enum 뒤에 변수 이름을 작성하고, 중괄호를 이용한 문자열의 모음들을 설정하면, 별 다른 설정을 하지 않으면 앞에서부터 0, 1, 2... 이렇게 숫자가 할당되고, 따로 숫자를 할당할 수도 있습니다. 따로 할당한 숫자는 enum에서 자동으로 부여하는 숫자의 영향을 받지 않습니다. 

    실제로 돌려본 예

     

    아래의 예는, Shade의 light의 index가 2이므로, 2가 color에 할당되었고, 그것을 (int)를 이용해 int형태로 형변환해서 출력한 모습입니다. 형변환을 하지 않으면 Shade타입의 변수 color는 cout함수로는 출력할 수 없으므로 E0349, C2679 오류가 발생합니다.

     

    형변환 했을때!

     

     

    형변환 안하면?
    오류 발생!!

     

     

     

    마지막으로, 최근의 C++는 할당해주는 값을 알아서 인식해서 변수의 타입을 결정해주는 auto라는 타입이 존재합니다. 이 것을 사용하게 되면 컴파일러가 알아서 변수의 타입을 설정합니다. 다만 값을 모르는 상태에서는 당연히 사용하지 못하겠죠?

     

     

     

    반응형
    • 네이버 블로그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기