C# 산술연산자 정리 [유니티 C#]

더하기, 빼기 연산자(+, -)
C#
    private void Start()
    {
        Debug.Log(5 + 1);
        Debug.Log(5 - 1);

        // [출력]
        // 6
        // 4
    }

더하기(+)와 빼기(-) 연산자는 연산자 기준 왼쪽의 피연산자에서 오른쪽의 피연산자를 더하거나 뺍니다.

후위증감연산자(++, –)
C#
    private void Start()
    {
        int i = 0;
        Debug.Log(i);
        Debug.Log(i++);
        Debug.Log(i);

        // [출력]
        // 0
        // 0
        // 1
    }

연산자(++, –)가 연산 대상(i) 뒤에 붙을 시 ‘후위증감연산자‘ 입니다.

두 번째 i를 출력한 시점(i++)에는 i가 0이고 이후에 ++연산을 진행하여 다음 출력 시 1이 출력됩니다.

전위증감연산자(++, –)
C#
    private void Start()
    {
        int i = 0;
        Debug.Log(i);
        Debug.Log(++i);
        Debug.Log(i);

        // [출력]
        // 0
        // 1
        // 1
    }

연산자(++, –)가 연산 대상(i) 앞에 붙을 시 ‘전위증감연산자‘ 입니다.

두 번째 i를 출력한 시점에는 이미++연산을 진행한 후이기 때문에 1을 출력하게 됩니다.

단항연산자(+, -)
C#
    private void Start()
    {
        int a = 5;
        int b = -7;

        // + 단항 연산
        Debug.Log(+a);
        Debug.Log(+b);

        // - 단항 연산
        Debug.Log(-a);
        Debug.Log(-b);

        // [출력]
        // 5 
        // -7
        // -5 
        // 7
    }

+연산자를 단항연산에 사용 시 기존의 값을 그대로 반환합니다.

-연산자를 사용 시 기존 값에 반대 부호를 적용한 값을 반환합니다.


C#
    private void Start()
    {
        uint a = 10;

        // UInt 단항 연산
        Debug.Log(+a);
        Debug.Log(-a);
        Debug.Log(a.GetType());

        // -a를 가지는 b의 타입
        var b = -a;
        Debug.Log(b.GetType());

        // [출력]
        // 10
        // -10
        // System.UInt32
        // System.Int64
    }

uint(양의 정수) 타입을 가진 변수에 -단항연산을 한 후 출력하면 반대 부호가 적용되며, 기존의 a의 타입에는 영향을 미치지 않습니다.

다만, ‘-a‘를 가지는 변수b의 타입은long 타입으로 변환됩니다.

곱하기 연산자(*)
C#
    private void Start()
    {
        var a = 5 * 2;
        var b = 1.5 * 2;

        Debug.Log($"{a}  {a.GetType()}");
        Debug.Log($"{b}  {b.GetType()}");

        // [출력]
        // 10                  System.Int32
        // 3                   System.Double
    }

곱하기 연산자는 피연산자 사이를 곱한 값을 제공합니다. 단, ‘*‘연산자를 단항연산자로 사용할 경우 이는 산술 연산이 아닌 포인터 간접 참조 연산자가 됩니다.

어떤 타입의 실수를 곱셈 연산 하는 지에 따라 타입이 결정됩니다.

나누기 연산자(/)
C#
    private void Start()
    {
        var a = 10 / 3;
        var b = 2.0 / 1.0;

        Debug.Log($"{a}  {a.GetType()}");
        Debug.Log($"{b}  {b.GetType()}");

        // [출력]
        // 3      System.Int32
        // 2      System.Double
    }

나누기 연산자는 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 값을 제공합니다.

위 예제의a변수 처럼 정수간 나눗셈을 할 경우 몫은 정수 타입이 되며, 소수점은 버림 처리됩니다.


C#
    private void Start()
    {
        var a = 1.0 / 0.0;
        var b = 0.0 / 0.0;

        Debug.Log(a);
        Debug.Log(b);

        // [출력]
        // Infinity
        // NaN
    }

나눗셈 연산에서 0이 아닌 수를 0으로 나눌 경우 값은 ‘수학적 무한대 (Infinity)’를 가지게 됩니다.

또한, 0을 0으로 나눌 경우 이는 ‘Not a Number (NaN)’가 됩니다.

나머지 연산자(%)
C#
    private void Start()
    {
        Debug.Log(7 % 2);
        Debug.Log(7 % -2);
        Debug.Log(-7 % 2);
        Debug.Log(-7 % -2);

        // [출력]
        // 1
        // 1
        // -1
        // -1
    }

나머지 연산자는 왼쪽의 피연산자에서 오른쪽의 피연산자를 나누었을 때의 나머지를 제공합니다.

나머지의 부호는 왼쪽 피연산자의 부호를 따릅니다.


C#
    private void Start()
    {
        Debug.Log(7.5 % 1.33);
        Debug.Log(7.0f % -2.0f);
        Debug.Log(-7.5d % 1.33d);
        Debug.Log(-7.0m % -2.0m);

        // [출력]
        // 0.85
        // 1
        // -0.85
        // -1.0
    }

소수의 나머지 연산도 왼쪽 피연산자의 부호를 따릅니다

복합할당 (+, -, * , /, %)
C#
    private void Start()
    {
        // + 복합할당
        int a = 5;
        a += 5;
        Debug.Log(a);

        // - 복합할당
        int b = 3;
        b -= 8;
        Debug.Log(b);

        // * 복합할당
        int c = 2;
        c *= 5;
        Debug.Log(c);

        // / 복합할당
        int d = 10;
        d /= 2;
        Debug.Log(d);

        // % 복합할당
        int e = 7;
        e %= 3;
        Debug.Log(e);

        // [출력]
        // 10
        // -5
        // 10
        // 5
        // 1
    }

복합할당은 [n 연산자= 피연산자] 꼴로 사용되며, 의미는 n을 피연산자를 연산자로 연산한 수로 할당한다는 의미입니다.

(전위, 후위)증감연산자는 1을 더하고 빼지만, 복합할당을 사용하면 1외의 수를 다양한 연산자로 연산할 수 있습니다.

연산 우선 순위
  1. 후위증감연산자 (n++ n–)
  2. 전위증감연산자 (++n –n)
  3. 곱하기, 나누기, 나머지 연산자 (* / %)
  4. 더하기, 빼기 연산자 (+ -)

연산 우선 순위는 후위증감연산 부터 더하기 빼기 연산 순으로 진행됩니다.

연산의 순서를 임의적으로 변경하려면 소괄호'()’ 기호를 사용하여 연산의 순서를 변경할 수 있습니다.

C#
    private void Start()
    {
        Debug.Log(5 + 2 * 2);
        Debug.Log((5 + 2) * 2);

        // [출력]
        // 9
        // 14
    }

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다