C++ 기본 문법 알아보기

2장. 변수 - 정보를 담는 그릇

보리보리밥밥 2019. 1. 2. 20:14

변수란?


우리가 프로그램을 사용하거나 만들때, 정보를 필요로 할 것이다.


그 정보는 숫자일수도 있고, 문자일 수도 있다.


그런데 그 정보를 저장하는 곳은 어디일까?


바로 '변수'에 저장한다.


다음 코드를 보자.


int main()

{

// 3개의 변수를 정의

int a;

int b;

int c;


// 각 변수에 값 대입

a = 100;

b = 200;

c = 300;


return 0;

}


이 프로그램을 실행하면 출력 값은 없지만 a, b, c라는 변수 3개가 생성되고 각각 100, 200, 300이라는 값이 들어갈 것이다.


쉽게 생각해서 변수는 '정보를 담는 그릇'인 것이다.


그렇다면 변수를 선언하지 않거나 선언과 대입의 순서를 바꿔서 실행을 하면 어떻게 될까?



이와 같이 에러를 내뿜는다.


변수를 사용하기 전에는 꼭 변수를 정의해야 한다.


그릇이 없는데 물건을 어떻게 담을수 있을까?


같은 원리로 이해하면 이해가 쉬워질 것이다.


그렇다면 앞에서 변수 a, b, c를 선언하고 100, 200, 300의 값을 대입했는데, 어떻게 확인할 수 있을까?


다음 코드를 보자.


#include <iostream>

using namespace std;


int main() 

{

int a;

int b;

int c;


a = 100;

b = 200;

c = 300;


cout << a << b << c;


return 0;

}


저번 글에서 배웠던 cout을 통해서 출력하고 있다.


출력 값을 보자.



보기 좋게 출력되지는 않았지만 100, 200, 300의 값이 들어 있다는 것은 알 수 있다.


그리고 저번 글에서 배웠던 cout을 통해서 "" 안에 있는 문자열 뿐만 아니라 변수 또한 출력 할 수 있음을 볼 수 있다.


그렇다면 문자열과 변수를 사용해서 보기 좋게 출력해보자.


#include <iostream>

using namespace std;


int main()

{

int a;

int b;

int c;


a = 100;

b = 200;

c = 300;


cout << a << ", " << b << ", " << c << "\n";

return 0;

}



각 숫자들을 분리하고 개행처리해서 보기 쉽게 만들었다!


자 그럼 출력값 뿐만 아니라 변수의 선언도 깔끔하게 만들어보자!


여러가지 방법이 있다.


// 3개의 변수를 동시에 선언

int a, b, c;


// 3개의 변수를 동시에 선언 후 초기화

int a = 100, b = 200, c = 300;


// 3개의 변수를 동시에 선언 후 일부 초기화

int a, b = 200, c;


상황에 따라 한 줄에 모두 선언하는 것은 비효율적일 수 있다.


자신의 상황에 맞게 적절한 방법을 사용하자!


이제 변수의 대입에 대해 연습해보자


a = 100;이라는 문장이 있다.


이 문장에서 = 는 'a는 100과 같다'가 아닌 'a라는 변수에 100이라는 값을 대입하겠다'라는 의미이다.


그렇다면 대입 연산자 =을 이용해서 변수에 보관된 값을 다른 변수에 넣어보자!


#include <iostream>

using namespace std;


int main()

{

// 2개의 변수 선언 및 초기화

int d = 1000, e = 2000;


// 변수의 값 확인

cout << "d = " << d << ", e = " << e << "\n";


// d에 e의 값을 대입

d = e;


// 변수의 값 확인

cout << "d = " << d << ", e = " << e << "\n";


return 0;

}



d = e; 문장을 통해서 e의 값을 d에 복사해 넣은 것을 알 수 있다.



여러가지 규칙들


변수를 사용하는 법을 배웠으니 이제 변수를 사용하면서 지켜야 할 규칙에 대해 알아보자.


int main()

{

// 동일한 이름의 변수에 대한 실험

int bori;          // 가능

int bori;          // 불가능 : 이미 정의된 변수 이름 사용 불가능


// 변수의 이름으로 사용할 수 있는 문자에 대한 실험

int abcDE;          // 가능

int _abc_de;        // 가능

int abc123;         // 가능

int _123abc;       // 가능

int abc@!~;       // 불가능 : _를 제외한 기호는 불가능

int 123abc;        // 불가능 : 숫자가 맨 앞에 위치하는 것은 불가능


// 변수 이름의 길이 제한 실험

int qwertyuiopasdfghjklzxcvbnmqazwsxedcrfvtgbyhnujmikol;            // 가능


// 대소문자 관련 시험

int Abc;          // 가능

int aBc;          // 가능

int abC;          // 가능

int ABc;          // 가능

int aBC;          // 가능

int AbC;          // 가능


// 키워드와 중복되는 경우 실험

int namespace;          // 불가능 : 예약어 이름을 변수 이름으로 사용 불가능

}


이와 같은 규칙들이 있다.


변수를 선언할 때 이름도 잘 지어야 알아보기 쉬운 코드가 된다.


변수의 용도를 예상할 수 있게 이름을 짓고 단어와 단어 사이를 _를 통해서 구분할 수 있게 짓는 것이 좋다.


그리고 필요 없이 긴 이름은 피하자.


자 그럼 변수는 언제 정의하는 것이 가장 좋을까?


int main()

{

int a, b;


a = 100;


~~~  // 아주 많은 코드!

~~~


b = a;


return 0;

}


int main()

{

int a;


a = 100;


~~~ // 아주 많은 코드!

~~~ 


int b;


b = a;


return 0;

}


두 코드중에 뭐가 더 보기 좋을까?


사용하기 직전에 변수를 정의하는 것이 가장 좋다.


다음 글에서는 타입에 대해서 알아보자.