이 글에서는 C++에서 변수를 선언하는 법과 그 변수에 값을 저장하는 법을 알아봅니다.
TL;DR
- C++에서는 문장을 쓰고 마침표의 의미로 세미콜론(
;
)을 씀 자료형 변수명;
(e.g.int num;
) 이라고 작성하여 메모리 공간 중 일부에변수명
이라는 이름을 붙여 활용할 수 있으며,=
연산자를 활용하여 그 공간에 값을 저장할 수도 있음- 자료형을 적어야 할 때 그 데이터의 자료형을 컴파일러가 결정할 수 있는 상태라면 자료형을 굳이 직접 쓰지 않아도
auto
라는 키워드를 통해 컴파일러에게 자료형 결정을 떠넘길 수 있음 (e.g.auto num = 3;
이라고 쓰면 컴파일러가auto
부분을 알아서int
로 인식함)
세미콜론(;
)
우리말은 문장이 끝났다는 의미로 마침표('.')를 적습니다.
C++에서도 컴파일러에게 한 문장이 끝났다는 것을 명시해주어야 합니다. 이 때 마침표의 의미로 사용하는 기호가 세미콜론(;
)입니다.
너무나 당연하게 자주 사용하고 보게 될 기호입니다만, 따로 강의글까지 만들 정도의 내용은 아닌 것 같아, 여기서 간단하게 설명하고 넘어갑니다.
변수
변수란 간단히 말해 자유로운 데이터 저장소입니다. 제한조건은 단 한 가지, 미리 그 저장소의 자료형을 정해두어야 한다는 것입니다.
변수의 선언(declaration)
변수의 선언이란, C++ 프로그램에서 이 변수를 사용하겠다라고 선언하는 것을 뜻합니다. 코드로는 자료형 변수명;
과 같이 적습니다.
변수명으로는 알파벳 대소문자(A~Z
, a~z
), 숫자(0~9
), 언더바(_
)를 자유롭게 조합하여 사용할 수 있습니다. (일부 C++에서 사용하는 문구는 불가능한 경우도 있습니다.)
예시를 보자면 다음과 같습니다.
int num; // Declare an int-type variable named "num"
double dbl_val; // Declare a double-type variable named "dbl_val"
값의 저장과 사용
변수를 만들어두었다면, 이 변수에 임의의 값을 저장해 둘 수 있습니다. 저장할 때에는 변수명 = 저장할값;
과 같이 적습니다. =
기호는 같다는 의미의 연산자가 아니라 우측의 값을 좌측의 메모리공간에 대입하는 연산자입니다.
만약, 변수를 선언함과 동시에 값의 저장까지 하고 싶다면, 자료형 변수명 = 저장할값;
과 같이 한 데 묶어서 적을 수도 있습니다1.
이 때, 변수의 자료형과 저장할 값의 자료형은 동일해야 합니다2.
값이 저장되어 있다면, 이후에는 변수명
을 이용하여 그 값이 필요한 곳에서 자유롭게 호출하여 사용할 수 있습니다.
저장된 값을 변경하려면 변수명 = 저장할값;
을 한 번 더 쓰면 됩니다.
예시를 보자면 다음과 같습니다.
int num = 3; // The value "3" was stored in a variable named "num"
std::cout << num << std::endl; // This will print 3
num = 5; // The value of variable named "num" has been changed to "5"
std::cout << num << std::endl; // This will print 5
auto 키워드
자료형을 적어야 할 때, 그 자리에 무슨 자료형이 적혀야 하는지가 명확하다면, 자료형을 직접 적지않고 컴파일러가 알아서 결정하게끔 할 수 있습니다. 이 때 활용하는 키워드가 auto
입니다.
예를 들어 int num = -1;
이라는 문장을 생각해봅시다. 여기서 int
자리에 굳이 int
라는 자료형을 명시해주지 않더라도, num
이라는 변수가 -1
이라는 값을 저장해야 한다는 사실로부터 num
의 자료형이 int
가 되어야 한다고 판단할 수 있겠지요3. 이런 경우에는 int
대신 auto
를 적을 수 있습니다. 다음과 같이 말이지요.
auto num = -1; // int num = -1;
단, 컴파일러가 자료형을 결정할 수 없는 경우에는 auto
키워드를 사용할 수 없습니다. 예를 들어 auto num;
과 같이 값을 저장하지 않고 선언만 하는 경우에는, num
이 어떤 자료형을 가져야 하는지 판단할 수 없으므로 컴파일 에러가 발생합니다.
Chanagelog
- 2022-03-19: 최초 게시
-
좀 더 정교한 설명을 위해서는, 선언(declare)/정의(define)/초기화(initialize)/할당(assign) 등으로 용어를 좀 더 세분화하여 이해할 필요도 있겠으나, 여기서는 간단하게만 설명하고 넘어가겠습니다. 필요한 분은 위의 키워드를 검색하여 공부해보시기 바랍니다. ↩︎
-
엄밀히 말하면 동일하지는 않아도 됩니다만, 저장할 값의 자료형으로부터 변수의 자료형으로 자동 형변환이 이루어질 수 있어야 합니다. 예를 들어, 3.0이라는 실수 자료형은 C++에서 자동적으로 3이라는 정수 자료형으로 형변환이 가능합니다. 이 경우에는
int num = 3.0;
과 같이 적어도 에러가 발생하지는 않습니다(warning은 발생할 수도 있습니다). ↩︎ -
경우에 따라 가능한 자료형이 여러 가지인 경우도 있습니다. 이런 경우에는
auto
키워드를 어떤 자료형으로 인식할 것인지 컴파일러가 가진 나름의 규칙을 바탕으로 결정합니다. ↩︎