03.02 - 산술 연산자 (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 divided by y |
Modulus (Remainder) | % | x % y | The remainder of x divided by y |
덧셈(+
), 뺄셈(-
), 곱셈(*
), 나눗셈(/
)은 모두 실생활에서 계산하는 것처럼 작동한다.
- 정수와 부동 소수점 숫자의 나눗셈 (Integer and floating point division)
나눗셈 연산자(/
')는 두 가지 "모드(mode)"를 가지고 있다. 만약 두 피연산자 모두 정수라면 /
연산자는 정수 나누기를 수행한다. 정수의 모든 소수점은 삭제하고 정수 값을 반환한다. (Ex. 7 / 4 = 1
)
두 피연산자 중 하나 이상이 부동 소수점 숫자면 /
연산자는 부동 소수점 나누기를 수행한다. (Ex. 7.0/3=2.333
, 7/3.0=2.333
, 7.0/3.0=2.333
)
만약 0(or 0.0)으로 나누려고 하면 결과가 정의되지 않으므로 오류가 발생해 프로그램이 중지된다.
- static_cast<>를 사용해서 정수와 부동 소수점 나눗셈을 수행한다.
'02.08 - 문자 (char)' 포스트에서 static_cast<>
를 사용해서 char
를 int
로 형 변환(type casting)해서 출력했었다.
비슷하게, static_cast<>
를 사용해서 정수를 부동 소수점 숫자로 변환하여 정수 나누기 대신 부동 소수점 나누기를 수행할 수 있다.
#include <iostream>
int main()
{
int x = 7;
int y = 4;
std::cout << "int / int = " << x / y << "\n";
std::cout << "double / int = " << static_cast<double>(x) / y << "\n";
std::cout << "int / double = " << x / static_cast<double>(y) << "\n";
std::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
모듈러 연산자 (Modular operator)
모듈러 연산은 나눗셈의 나머지를 구하는 연산이다. 그래서 모듈러 연산자(modular operator) %
를 나머지 연산자(remainder operator)라고도 한다. 정수 피연산자에서만 작동하며 정수 나눗셈을 수행 후 나머지를 반환한다. (Ex. 7/4=1
의 나머지: 3
→ 7%4=3
)
모듈러 연산자(%
)는 숫자가 다른 숫자와 균등하게 나누어지는지 테스트할 때 매우 유용하다. 예를 들어, x % y == 0
이면 x가 y로 균등하게 나누어지는지 알 수 있다.
예를 들어, 1부터 100까지 한 줄에 20개의 숫자를 출력하는 프로그램을 작성해야 할 경우 모듈러 연산자를 통해 어디서 줄 바꿈을 해야 하는지 알 수 있다.
#include <iostream>
int main()
{
int count = 1;
// count가 100보다 클 때까지 반복한다.
while (count <= 100)
{
std::cout << count << " "; // count를 출력한다.
// 20으로 나누어지면 줄 바꿈을 한다.
if (count % 20 == 0)
std::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
while
반복문은 다음에 배울것이다.
산술 할당 연산자 (Arithmetic assignment operators)
Operator | Symbol | Form | Operation |
---|---|---|---|
Assignment | = | x = y | Assign value y to x |
Addition assignment | += | x += y | Add y to x |
Subtraction assignment | -= | x -= y | Subtract y from x |
Multiplication assignment | *= | x *= y | Multiply x by y |
Division assignment | /= | x /= y | Divide x by y |
Modulus assignment | %= | x %= y | Put the remainder of x / y in x |
지금까지 변수에 5를 더하려면 다음과 같이 했다.
x = x + 5;
위 작업을 더 간결하게 해주는 산술 할당 연산자(arithmetic assignment operator)가 있다.
x = x + 5
와 같은 문장은 너무 흔하므로 C++는 x += 5
와 같은 연산자를 제공한다. x = x * y
대신 x *= y
를 쓸 수 있다.
x += 5;
이 포스트의 원문은 http://www.learncpp.com/cpp-tutorial/32-arithmetic-operators/ 입니다.
'C++ 이야기 > 03. 연산자' 카테고리의 다른 글
C++ 03.06 - 논리 연산자 (Logical operators) (2) | 2018.06.27 |
---|---|
C++ 03.05 - 관계 연산자 (Relational operators) (1) | 2018.06.27 |
C++ 03.04 - sizeof, 조건부 연산자 (Conditional operators) (0) | 2018.06.27 |
C++ 03.03 - 증감 연산자와 사이드 이펙트 (Increment/decrement operators, and side effects) (1) | 2018.06.26 |
C++ 03.01 - 연산자 우선순위와 연관성 (0) | 2018.06.26 |