본문 바로가기

산술 연산자 arithmetic operators 본문

💘 C++/연산자들

산술 연산자 arithmetic operators

Hyonii 2021. 12. 29. 23:41

단항 산술 연산자 (Unary arithmetic operators)

C++ 에는 단항 더하기(+), 단항 빼기(-) 두 가지 단항 산술 연산자(unary arithmetic operator)가 있다.

이 두 가지 연산자는 숫자 표현식의 음수 또는 양수 값을 반환한다.

단항 연산자는 피연산자를 하나만 취한다.

Operator Symbol Form Operation
Unary plus + +x Value of x
Unary minus - -x Negation of x

이항 산술 연산자 (Binary arithmetic operators)

다섯 가지의 이항 산술 연산자(binary arithmetic operator)가 있다.

이항 산술 연산자는 연산자 왼쪽과 오른쪽에 피연산자를 취한다.

Operator Symbol Form Operation
Addition + x + y x plus y
Subtraction - x - y x minus y
Multiplication * x * y x multiplied by y
Division / x / y x divideded by y
Modulus (Remainder) % x % y The remainder of x
divided by y

정수와 부동 소수점 숫자의 나눗셈 (Integer and floating point division)

나눗셈 연산자(/')는 두 가지 모드를 가지고 있다.

 

두 피연산자 모두 정수라면 / 연산자는 정수 나누기를 수행한다.

정수의 모든 소수점은 삭제하고 정수 값을 반환한다.

  

두 피연산자 중 하나 이상이 부동 소수점 숫자면 / 연산자는 부동 소수점 나누기를 수행한다. 

#include <iostream>

using namespace std;

int main()
{	
	int x = 7;
    int y = 4;
    
    cout << x/y << endl;
    cout << float(x) / y << endl;
    cout << x / float(y) << endl;
    cout << float(x) / float(y) << endl;
    
    return 0;
    
   }
   
   //This produces the result:
   //1
   //1.75
   //1.75
   //1.75

static_cast<>를 사용해서 정수와 부동 소수점 나눗셈을 수행한다.

static_cast<>를 사용해서 정수를 부동 소수점 숫자로 변환하여 정수 나누기 대신 부동 소수점 나누기를 수행할 수 있다.

#include <iostream> 
using namespace std;

int main()
{  
	int x = 7; 
	int y = 4; 
			
	cout << "int / int = " << x / y << "\n"; 
	cout << "double / int = " << static_cast<double>(x) / y << "\n"; 
	cout << "int / double = " << x / static_cast<double>(y) << "\n"; 
	cout << "double / double = " << static_cast<double>(x) / static_cast<double>(y) << "\n"; 

	return 0; 

} 

This produces the result: 
int / int = 1 
double / int = 1.75 
int / double = 1.75 
double / double = 1.75

만약 0(or 0.0)으로 나누려고 하면 결과가 정의되지 않으므로 오류가 발생해 프로그램이 중지된다.

 

음수를 나누는 경우에는 

ex) -5 / 2  하면 -2가 나오게 나머지를 절석한다.

 

모듈러 연산자 (Modular operator)

모듈러 연산은 나눗셈의 나머지를 구하는 연산이다.

그래서 모듈러 연산자(modular operator) %나머지 연산자(remainder operator)라고도 한다.

 

정수 피연산자에서만 작동하며 정수 나눗셈을 수행 후 나머지를 반환한다.

(Ex. 7/4=1의 나머지: 3 → 

     7%4=3)

ex) -5 % 2 하면 나머지 연산자도 나머지가 양수인지 음수인지 헷갈릴 수 있는데

왼쪽에 있는 숫자가 음수이면 나머지 연산자의 결과도 음수

왼쪽에 있는 숫자가 양수이면 나머지 연산자의 결과도 양수로 나온다.

 

나머지 연산자(%)는 숫자가 다른 숫자와 균등하게 나누어지는지 테스트할 때 매우 유용하다.

예를 들어, x % y == 0 이면 x가 y로 균등하게 나누어지는지 알 수 있다.

예를 들어, 1부터 100까지 한 줄에 20개의 숫자를 출력하는 프로그램을 작성해야 할 경우 모듈러 연산자를 통해 어디서 줄 바꿈을 해야 하는지 알 수 있다.

#include <iostream> 
using namespace std;

int main() 
{ 
	int count = 1; // count가 100보다 클 때까지 반복한다. 
		
	while (count <= 100) 
	{ cout << count << " "; // count를 출력한다. 

	// 20으로 나누어지면 줄 바꿈을 한다. 
	if (count % 20 == 0) 
	cout << "\n"; 
	count = count + 1; }

	return 0; 
} 

This results in: 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

산술 할당 연산자 (Arithmetic assignment operators)

= 등호는 대입연산자

ex) int x = 7;

     int y = 4;

     int z = x; 일 때 

 

x변수가 가르키고 있는 메모리에 있는 정보를

z변수가 가르키고 있는 메모리에다가 복사해 넣으라는 의미

 

#include <iostream>

using namespace std;

int main()
{
	int x = 7;
    int y = 4;
    
    int z = x;
    
    z += y; // z = z + y;
    z %= y; // z = z % y;
    
    return 0;
   
   }

 

Comments