본문 바로가기
C++/기초

C++ 기초 : 산술 연산자

글: 시플마 2024. 2. 6.

연산자 종류를 살펴봅시다.

 

산술 연산자는 +, -, *, /, %가 있습니다.

순서대로 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산자(모듈러스 연산자)입니다.

 

대입 연산자는 = 입니다.

말 그대로 대입하는 연산자입니다.

 

코드를 통해 자세하게 이야기하겠습니다.

int data = 10 + 10;

 

data라는 변수에 들어가는 값은 몇일까요?

10과 10이 덧셈 연산되어 20이 변수 data에 대입됩니다.

여기서 중요한 점은 덧셈 연산자가 먼저 진행되고 대입 연산자가 진행되는 점입니다.

만약 대입 연산자가 먼저 진행되면 data에는 10이 대입되겠죠.

 

 

이번에는 아래와 같은 코드를 입력하고 컴파일하면 data의 값이 변할까요?

data + 20;

 

변하지 않습니다. 대입 연산자를 사용하지 않았기 때문입니다.

 

변수 data의 값은 여전히 20이다.

 

 

여기서 궁금한 점이 생깁니다. 

data에 값이 대입되지 않으면 우리가 계산한 data + 20, 즉 40이라는 값은 어디 갔을까요?

CPU가 연산을 할 때 사용하는 레지스터는 중간 연산 결과를 저장한다.

 

 

40이라는 값은 CPU 내부의 레지스터라는 공간에 저장되었다가 필요할 때 사용됩니다.

다만 휘발성 기억 장소이기 때문에 새로운 데이터로 교체될 경우 사라집니다.

 

다시 돌아와서

덧셈 연산을 한 후, 실질적으로 data의 값을 바꾸려면 대입 연산자를 사용해야 합니다.

 

대입 연산자를 사용하여 변수 data에 값을 대입했다.

 

 

 

또한 data에 값을 대입하는 과정은 아래 코드와 같이 바꾸어 쓸 수 있습니다.

변수 data 기존 값에 20을 더하고 그 값을 다시 변수 data에 대입하는 과정.

 

 

 

뺄셈, 곱셈, 나눗셈 연산자도 덧셈 연산자와 같습니다.

나머지 연산자(모듈러스)는 특징이 있어 짚고 넘어가겠습니다.

 

나눗셈 연산자 사용

 

위 코드를 보면 10과 3을 나눈 몫을 data에 넣었고 확인 결과 3이 대입되었습니다.

여기서 나머지 값을 얻어 data에 대입하고 싶다면

나눗셈 연산자 대신 나머지 연산자로 바꿔주면 됩니다.

 

나머지(모듈러스) 연산자 사용

 

정수와 정수 사이의 나눗셈에서는 나머지를 0 또는 다른 수로 특정할 수 있습니다.

10과 3을 나누면 몫 3과 나머지 1이 나오는 것처럼요.

그렇다면 실수와 실수 사이의 나눗셈은 어떨가요?

10.0과 3.0을 나누면 3.3333...이 나옵니다. 

그렇습니다. 소수점 이하의 값이 계속 반복되는 몫이 나올 수 있어

나머지라는 개념이 없습니다.

 

실수와 실수 사이의 나머지 연산자를 진행하니 오류가 발생한다.

 

따라서 실수와 실수 사이의 나머지 연산을 진행하면

위와 같이 오류가 발생합니다.

나머지 연산자는 반드시 정수끼리 사용해야 합니다.

 

 


 

 

실수끼리 나눗셈을 진행하고 정수 타입 변수 data에 대입했다.

 

10.0과 3.0을 나누면 3.333...이 나옵니다. 

이를 int형 변수 data에 대입하면 3이 대입됩니다.

들어갈 곳이 정수형이기 때문에 3.333...이 정수형으로 변환된 후 대입되는 것입니다.

 

이 경우 자동으로 형변환을 해주기는 하지만

아래처럼 형변환을 명시하여 의도적으로 작성한 코드임을 알리는 것이 좋습니다.

int로의 형변환을 명시하였다.

 

 


 

 

참고로 값 뒤에 f를 붙이면 float(4byte) 타입,

아무것도 붙이지 않으면 double(8byte) 타입으로 취급한다는 의미입니다.

float f = 213.123f; //float 타입 실수
double d = 123.311; //double 타입 실수

 

 

 

 

 

강의 출처 : https://www.youtube.com/watch?v=PFc4g8mxOiI&list=PL4SIC1d_ab-aOxWPucn31NHkQvNPHK1D1&pp=iAQB


 

'C++ > 기초' 카테고리의 다른 글

C++ 기초 : 논리 연산자  (0) 2024.02.09
C++ 기초 : 증감 연산자  (0) 2024.02.06
C++ 기초 : 실수형 자료형  (0) 2024.02.06
C++ 기초 : 정수형 자료형  (0) 2024.02.02
C++ 기초 : 자료형  (0) 2024.02.01