소년코딩

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<>를 사용해서 charint로 형 변환(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의 나머지: 37%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;

cpp 이 포스트의 원문은 http://www.learncpp.com/cpp-tutorial/32-arithmetic-operators/ 입니다.

댓글 로드 중…

블로그 정보

소년코딩 - 소년코딩

소년코딩, 자바스크립트, C++, 물리, 게임 코딩 이야기

최근에 게시된 이야기