본문 바로가기
C++ 독학/[C++ 독학] C++ 배우기

[C++ 독학] 변수와 타입 <C++의 기초> 02

by NpsCause 2022. 3. 6.

Visual Studio가 설치돼있지 않으신 분들은 이전 글을 먼저 보고 오시는 것을 추천드립니다.

이전 글 : 2022.03.04 - [C++ 독학] - [C++ 독학] 기본 환경 세팅

 

변수

데이터를 담고 있는 그릇! 변수

 

프로그래밍에서 변수는 데이터를 저장하기위해 사용하는 저장공간입니다.

 

변수는 저장할 데이터에 따라 정수, 실수, 문자 등으로 나뉩니다. 우리는 이것을 타입(type)이라 부르고 C++에서는 이를 명시적으로 작성해 주어야 합니다.

 

변수의 기본 선언 형태는 이와 같습니다.

여기서 변수의 이름을 정할때 지켜야 할 규칙이 있습니다.

 

변수 이름의 규칙

 

  • 영어(대소문자 구분), 한글, 숫자, _(언더스코어)로 구성됩니다.
  • 변수 이름 앞에 숫자가 올 수 없습니다.
  • 변수 이름 사이에 공백이 올 수 없습니다.
  • C++에서 미리 정의된 키워드(keyword)는 사용할 수 없습니다.

여기에서 키워드는 C++내부적으로 미리 정의된 문자를 말합니다.

다양한 키워드 : https://docs.microsoft.com/ko-kr/cpp/cpp/keywords-cpp?view=msvc-170

 

변수 이름을 정할때 각각의 스타일이 있는데 예를 들면

this_is_name과 같은 스타일은 GNU Naming Convention or 스네이크 표기법이라 부르고

thisIsName과 같은 스타일을 PascalCasing (파스칼 케이싱)이라 부릅니다.

또 나중에 나올 상수(constant)와 같은 경우엔 대문자로 하는 것이 프로그래머들의 암묵적인 약속입니다. 

ex) THIS_IS_NAME

 

이름을 어떻게 정의하는지는 각자의 방식이고 나름의 개성이지만 그 변수가 어떤 역할을 하는지 알 수 있도록 선언하는 습관을 들이는 것이 좋습니다.

 

타입

 

앞서 설명했듯 타입은 변수가 담고 있는 데이터의 형태인데요 타입을 다른 말로 자료형(data type)이라고도 부릅니다.

 

자주 사용하는 자료형은 int(정수), float(실수), double(실수), char(문자), string(문자열)등이 있습니다. 다 외우진 않으셔도 됩니다. 어차피 자연스럽게 외워질 거라 ㅎㅎ

더 많은 타입 : https://docs.microsoft.com/ko-kr/cpp/cpp/data-type-ranges?view=msvc-170 

 

만약 변수를 double(실수)로 선언했는데 int(정수)로 타입을 변경해야 된다면 어떡할까요?

 

타입 캐스팅

 

타입 캐스팅(type casting)은 변수의 타입을 실행 중에 바꾸는 것을 뜻합니다. 예를 들어 double(실수)의 값을 int(정수)로 바꾼다면 아래와 같은 코드로 표현합니다.

double myDouble = 3.14;
int i1 = (int)myDouble;     
int i2 = int(myFloat);
int i3 = static_cast<int>(myDouble);

첫 번째 방법과 두 번째 방법은 그리 좋은 방식이 아닙니다. 때문에 귀찮더라도 세 번째 방법으로 하는 것이 가장 바람직합니다.

 

이렇게 실수인 3.14를 정수로 바꾼다면 결과는 어떻게 될까요? 

강제 캐스팅(형변환)

다음과 같이 3을 제외한 소수점 아래 부분이 사라지게 됩니다. 

 

이렇게 문맥에 따라서 타입을 강제로 바꾸는 것을 강제 캐스팅(coerce casting)이라 하고 강제로 타입을 변경했을 때 위 와 같이 데이터 손실이 일어날 수 있습니다.

 

 

연산자

변수를 더하고 빼고 곱하고 나누는 연산자 

 

C++에서 자주 사용하는 연산자는

연산자 설명 사용 예시
= 오른쪽의 값을 왼쪽의 표현식에 대입하는 이항연산자입니다.
수학에서는 같다(equle)이라는 뜻이지만 프로그래밍에서는 대입한다는 뜻입니다.
int var1 = 3;
int var2 = var1;
+ 덧셈을 나타내는 이항 연산자
이항 연산자는 자신을 연산할때 다음과 같이 축약이 가능합니다.
var1 = var1 + var2 ==> var1 += var2
int var1 = 1+2;
int var2 = var1+var2;
int var3 += var1;
-
* (shift+8)
/ (slash)
뺄셈, 곱셈, 나눗셈(몫)을 나타내는 이항 연산자 int var1 = 1+2;  ==> 3
int var2 = 1*2;  ==> 2
int var3 = 10/4;  ==> 2
% (shift+5) 나눗셈의 나머지를 나타내는 이항 연산자 int var1 = 10%3  ==> 1
++
--
표현식에 +1을 더하는(빼는) 단항 연산자
이 연산자를 변수 앞에 붙이냐 뒤에 붙이냐에 따라 전위 연산자 와 후위 연산자로 나뉩니다. (추후 부록에 정리)
int var1 = 5;
var1++;  ==> 6
var1--;  ==> 4

더 다양한 연산자들 : https://docs.microsoft.com/ko-kr/cpp/cpp/cpp-built-in-operators-precedence-and-associativity?view=msvc-170

 

프로그램은 이 연산자들을 일정한 순서에 따라 값을 계산하는데 우리가 수학에서 사칙연산하는 방법과 동일합니다. 또  괄호에 있는 값을 우선적으로 계산합니다.

ex)

int i1 = 5 + 2 * 10 / 5  ==> 9

int i2 = 35 + 9 * 2 + 21 / 7 % 2  ==> 54

int i3 = 6 * (3 + 2) + ((12-7) /2)  ==> 32

 

 

마치며

오늘은 프로그래밍의 가장 기초가 되는 변수와 연산자에 대해 알아봤습니다. 모든 프로그래밍의 기초가 되는 이론이므로 반드시 숙지하셔야 합니다.

 

프로젝트 : https://npscause.tistory.com/11

 

[C++ 독학] 사원 정보 저장 <프로젝트 02>

사원 정보 입출력 N 컴퍼니에 신입사원이 들어왔습니다. 해당 사원의 정보를 입력받아 출력해 주는 프로그램을 작성해 봅시다. 입력 예시 출력 예시 오류가 났다면 Check! 더보기 각 변수를 저장

npscause.tistory.com

 

댓글