본문 바로가기
프로그래밍/C#

C# for 반복문 작성 시 후위 증가 연산자를 쓰는 이유

by bantomak 2024. 3. 29.

평상시 쓰던 for 반복문

지금까지 너무나도 당연하게 작성하고 있는 for 반복문

하지만 갑자기 의문이 들었다. 왜 for 반복문에서 증감연산자는 후위 증가연산자를 사용하는가?

 

using System;

public partial class Program
{
    static void Main(string[] args)
    {
        int[] ints = { 8, 10, 24, -1, 98, 47, -101, 39 };

        for (int i = 0; i < ints.Length; i++) 
        {
            Console.WriteLine(ints[i]);
        }
    }
}

 

for 반복문의 경우 (초기화 ; 조건 검사 ; 증감 연산)과 같이

각각이 별도의 연산으로 증감 연산에서 전위 후위에 관계없이 동일한 결과를 도출한다.

 

i++, ++i 

어느 쪽을 사용하던지 동일한 결과를 도출한다.

후위 증감 연산자를 사용하는 경우 임시 변수가 생성되지만 컴파일러 최적화를 통해서 거의 동일한 성능을 가진다.

 

과거부터 프로그래머들이 써오던 관습(convention)에 의해 for 반복문의 증감 연산자는 후위 증감 연산자를 사용한다.

 

for 반복문에서는 이 둘이 동일하지만 다른 예제에서는 어떻게 동작하는지 살펴보자.

 

전위 증감연산자 vs 후위 증감연산자

아래 예제의 결과를 예상해보도록하자.

using System;

public partial class Program
{
    static void Main(string[] args)
    {
        int num1 = 2;
        int num2 = 2;

        int num3;
        int num4;

        num3 = num1++;
        num4 = num2--;

        Console.WriteLine($"num3: {num3}");
        Console.WriteLine($"num4: {num4}");
    }
}

 

더보기
두둥! 놀랍게도 2의 결과를 출력한다.

어떤가? 답을 맞혔다면 당장 뒤로 가기를 눌러도 괜찮다.

 

후위 증가 연산자와 할당

num3 = num1;
num1 = num1 + 1;

num4 = num2;
num2 = num2 - 1;

 

후위 증가 연산자는 우선 할당을 실행하고 그 이후에 증가를 실행한다. 그 과정은 위와 같다.

 

using System;

public partial class Program
{
    static void Main(string[] args)
    {
        int num1 = 2;
        int num2 = 2;

        int num3;
        int num4;

        num3 = ++num1;
        num4 = --num2;

        Console.WriteLine($"num3: {num3}");
        Console.WriteLine($"num4: {num4}");
    }
}

 

 

전위 증가 연산자와 할당

num1 = num1 + 1;
num3 = num1;

num2 = num2 - 1;
num4 = num2;

 

후위 증가 연산자는 우선 증가 이후에 할당을 실행한다. 그 과정은 위와 같다.

 

추가 확인 예제

그렇다면 아래의 예제처럼 메서드의 인자로 넘기는 경우 어떻게 적용될지 생각해 보자.

using System;

public partial class Program
{
    static void Main(string[] args)
    {
        int num1 = 2;

        TestFunc(num1++);
    }

    static void TestFunc(int n)
    {
        Console.WriteLine(n);
    }
}

 

더보기
인자에 후위 증가 연산자를 사용했기 때문에 2가 출력된다.

 

참고 사이트

 

C 언어 코딩 도장: 13.4 증감 연산자의 위치에 따른 차이점 알아보기

증감 연산자는 변수 앞에 사용할 수도 있고 뒤에 사용할 수도 있습니다. 여기서 증감 연산자만 단독으로 사용했을 때는 큰 차이가 없지만, 연산자를 사용한 뒤 다른 변수에 할당할 때는 위치에

dojang.io

댓글