산술 연산자 arithmetic operators 본문
단항 산술 연산자 (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;
}
'💘 C++ > 연산자들' 카테고리의 다른 글
논리 연산자 Logical Operators (0) | 2022.01.03 |
---|---|
관계연산자 Relational Operators (0) | 2022.01.03 |
Sizeof, 쉼표 연산자, 조건부 연산자 (0) | 2022.01.02 |
증감 연산자 increment decrement operators (0) | 2021.12.31 |
연산자 우선순위와 결합 법칙 (0) | 2021.12.29 |