할당 연산자와 증감 연산자 사용하기

  • 14 minutes to read

이번 강의는 변수에 값을 대입하는 할당 연산자와 변수의 값을 증가 또는 감소시키는 증감 연산자에 대해서 정리합니다.

> // 할당 연산자와 증감 연산자: =, +=, -=, *=, /=, %=, ++, --

할당 연산자(Assignment Operator)

할당 연산자는 변수에 값을 대입할 때 사용되며, 대입 연산자로도 불립니다. 수학에서 = 기호는 "같음"을 의미하지만, C#에서는 오른쪽의 값 또는 식의 결과를 왼쪽 변수에 저장하는 역할을 합니다.

할당 연산자의 종류

C#에서 사용되는 주요 할당 연산자는 다음과 같습니다.

=, +=, -=, *=, /=, %=

할당 연산자의 사용 예

연산자 예시 설명
= A = B 변수 A에 변수 B의 값을 대입합니다.
+= A += B A = A + B와 동일하며, AB를 더한 값을 다시 A에 저장합니다.
-= A -= B A = A - B와 동일하며, A에서 B를 뺀 값을 다시 A에 저장합니다.

이러한 연산자는 코드를 간결하게 작성할 수 있도록 도와줍니다.

할당 연산자 사용하기

지금까지 우리가 사용해 온 변수 선언 후 초기화할 때 사용한 = 연산자가 바로 데이터를 할당하는 할당 연산자입니다.

코드: AssignmentOperator.cs

> //[?] 할당(대입) 연산자: 변수에 특정 값으로 초기화하면 자동 유추에 의해서 형식이 결정됨
> var name = "C#"; // name 변수에 문자열을 대입합니다. 
> var version = 13.0; // version 변수에 숫자를 대입합니다. 
> $"{name} {version}"
"C# 13"

대입되는 값에 따라서 자동으로 유추되어 name 변수는 string 형식으로, version 변수는 double 형식으로 변수가 선언됩니다.

변숫값 서로 바꾸기

프로그래밍을 하다보면 변수의 값을 서로 변경할 필요가 있을 수 있습니다. 이러한 경우에는 일반적으로 임시 변수를 하나 더 두고 이곳에 먼저 나온 데이터를 임시 보관하는 식으로 데이터를 바꿀 수 있습니다. 다음 코드를 살펴보세요. 소스는 SwapDemo.cs 파일에서 볼 수 있습니다.

(1) ij에 각각 100과 200을 넣고 출력해 봅니다.

> var i = 100;
> var j = 200;
> $"처음: {i}, {j}"
"처음: 100, 200"

(2) ij의 값을 변경하려면 임시 변수인 temp를 두고 i의 값을 저장합니다. 그런 다음 ij를 대입 후 마지막으로 jtemp를 대입합니다. 이런 과정을 거치면 두 변수의 데이터가 변경됩니다.

> var temp = i; //[A] 임시 변수에 i 값 담기
> i = j; //[B] i 값에 j 값으로 덮어쓰기
> j = temp; //[C] j에 i 값이 담겨 있던 temp값으로 덮어쓰기
> $"변경: {i}, {j}"
"변경: 200, 100"

변수의 값을 1 증가시키기

이번에는 변수의 값을 1 증가시키는 코드를 만들어보겠습니다.

코드: IncrementNumber.cs

> //[?] 정수형 변수의 값을 1씩 증가
> int num = 10;
> num = num + 1; // 1 증가
> num
11

변수의 값을 1 감소시키기

이번에는 변수의 값 감소 기능을 사용해보겠습니다.

코드: DecrementNumber.cs

> //[?] 정수형 변수의 값을 1씩 감소
> int num = 10;
> num = num - 1; // 1 감소
> num
9

대입 연산자 축약형 사용하기

대입 연산자는 += 형태로 축약형으로 사용할 수 있습니다. 이와 같은 축약 표현을 복합 할당 연산자라고 합니다.

이번에는 x = x + 2; 형태를 x += 2; 형태로 축약해서 사용할 수 있는 숏컷 연산자인 += 연산자를 사용해보겠습니다.

코드: ShortcutOperator.cs

> int x = 3;
> int y = 3;
> 
> x = x + 2; // 기본형
> y += 2; // 축약형
> 
> $"x: {x}, y: {y}"
"x: 5, y: 5"

기본형과 축약형은 모두 동일하게 x 변수와 y 변수에 2를 더해서 저장하는 기능을 합니다.

+=-= 연산자 사용하기

A += B와 같은 연산은 단지 A = A + B와 같은 구문을 줄여서 사용하는 목적이 큽니다. 이처럼 C#에서는 개발자가 최소한의 입력으로 동일한 효과를 보여줄 수 있는 풍부한 연산자를 제공합니다.

이번에는 += 연산자와 -= 연산자를 사용해보겠습니다.

코드: ShortcutOperatorDemo.cs

> int a = 3;
> int b = 5;
> 
> b += a; // 누적: b변수에 a변수의 값을 누적
> b
8
> 
> b -= a; // 가감: b에서 a를 뺀 후 다시 b에 할당
> b
5

할당 연산자 중에는 += 연산자 말고도 -=, *=, /=, %= 등을 제공합니다.

증가, 감소 연산자 사용하기

변수의 값을 1 증가시키거나 1 감소시키는 연산자가 있습니다. 증가 또는 감소 연산자라고 하여 줄여서 증감 연산자(Increment/Decrement Operator)라고도 합니다. ++ 연산자는 증가 연산자이고 -- 연산자는 감소 연산자입니다. 증감 연산자는 정수형 변수의 값을 1 증가 또는 1감 소하는 기능을 하는 단항(Unary) 연산자이며, 증감 연산자가 변수 앞에 위치하느냐 뒤에 위치하느냐에 따라 연산 처리 우선순위가 결정됩니다.

증감 연산자의 종류는 다음과 같습니다.

연산자 설명
++(증가 연산자) 변수 값에서 1을 더합니다.
--(감소 연산자) 변수 값에서 1을 뺍니다.

증감 연산자 중 증가 연산자 사용하기

증가 연산자는 하나의 변수의 값을 1씩 증가시키는 연산자로 알려져 있으며, 반대로 변수의 값을 1씩 감소시키는 연산자를 감소 연산자라고 합니다. 이 두 연산자를 합쳐 일반적으로 증감 연산자라고 부릅니다.

이번 섹션에서는 증가 연산자의 사용 방법에 대해 알아보겠습니다.

코드: IncrementOperator.cs

> //[?] 증가 연산자: 정수 자료형 변수의 값을 1 증가
> int num = 100;
> ++num; // 1 증가
> num
101

증감 연산자 중 감소 연산자 사용하기

이번에는 감소 연산자를 사용해보겠습니다.

코드: DecrementOperator.cs

> //[?] 감소 연산자: 정수 자료형 변수의 값을 1 감소
> int num = -100;
> --num; // 1 감소
> num
-101

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

증감 연산자의 위치에 따라 연산 처리 우선순위가 달라집니다. 변수 앞에 있을 경우, 먼저 변수 값을 증가시킨 후 해당 값을 사용합니다. 반면 변수 뒤에 있을 경우, 먼저 해당 값을 사용하고 나서 변수 값을 증가시킵니다.

표: 전위 증감 연산자와 후위 증감 연산자

구 분 설 명 사용 예
전위(Prefix) 증감 연산자 정수형 변수의 앞에 연산자가 위치하여 변수 값을 미리 증감 후 다른 연산을 수행합니다. ++a;
--b;
후위(Postfix) 증감 연산자 정수형 변수의 뒤에 연산자가 위치하여 연산식(대입)을 먼저 실행 후 나중에 변수의 값을 증감합니다. a++;
b--;

전위 증감 연산자 사용하기

전위 증감 연산자를 사용해 보겠습니다. 앞에 붙는 증감 연산자는 해당 라인에서 실행 우선순위가 가장 높습니다.

코드: PrefixOperator.cs

> // 전위(Prefix) 증감 연산자: 우선순위가 높음
> int i = 3;
> int j = ++i;
> j
4

++i 형태로 앞에 붙는 경우에는 i의 값을 우선적으로 1증가 시켜줍니다. 위 예제에서는 i의 값이 3에서 4로 증가된 후 이 값이 j에 할당되어 j의 값이 4가 됩니다.

후위 증감 연산자 사용하기

후위 증감 연산자는 해당 라인에서 대입 연산자보다 우선순위가 낮습니다.

코드: PostfixOperator.cs

> // 후위(Postfix) 증감 연산자: 우선순위가 낮음
> int x = 3;
> int y = x++;
> y
3
> x
4

x++ 형태로 뒤에 증가 연산자가 붙어서 x의 값이 3이 먼저 y에 할당된 후 증가가 되기에 y 변수에는 3이 대입된 상태가 됩니다.

즉, 다음 3개의 구문은 모두 동일한 기능을 합니다.

a = a + 1; a += 1; ++a;

장 요약

이번 강의는 할당 연산자인 =, +=, -=, *=, /=, %=과 증가 또는 감소 연산자인 ++--를 다루어 보았습니다. 계속해서 비교 연산자와 논리 연산자를 알아보겠습니다.


1.1 퀴즈

(1) 다음 중 number = number + 3;과 의미가 같은 표현을 고르세요.

a. number = 3;
b. number += 3;
c. number =+ 3;
d. number = ++3;

정답: b

number += 3;number = number + 3;을 축약한 표현입니다.


(2) 변수 number의 값을 1 증가시키는 올바르지 않은 코드를 고르세요.

a. number++;
b. number += 1;
c. ++number;
d. number + 1;

정답: d

number + 1;은 단순한 연산일 뿐, 증가된 값을 변수에 저장하지 않으므로 number의 값은 변하지 않습니다.


(3) 다음 코드 실행 후, 변수 y의 값은 얼마인가요?

Int32 x = 3;
Int32 y;
y = x++;

정답: 3

증가 연산자(++)가 후위(postfix) 위치에 있으므로 x의 원래 값을 먼저 y에 할당한 후 증가합니다.

  • y = 3
  • 이후 x4가 됨

(4) 다음 코드 실행 후, 변수 y의 값은 얼마인가요?

int x = 3;
int y;
y = --x;

정답: 2

감소 연산자(--)가 전위(prefix) 위치에 있으므로 x를 먼저 감소한 후, y에 할당합니다.

  • x2로 감소
  • y = 2

1.2 연습문제: 증가, 감소 연산자 사용하기

다음 소스 코드를 완성하여 3과 6이 각 줄에 출력되도록 하세요.

코드

// 연습문제: 증가, 감소 연산자 사용하기 
using System;

class IncrementDecrementPractice
{
    static void Main()
    {
        int number1 = 3; //[1]
        int number2 = 5; //[2]

        int result1 = 0;
        int result2 = 0;

        number1--; 
        result1 = ++number1; 

        ++number2; 
        result2 = number2--; 

        Console.WriteLine(result1); // 3
        Console.WriteLine(result2); // 6
    }
}

실행 결과

3
6

정답

[1] 3
[2] 5

해설

결과값을 기준으로 코드를 역순으로 분석하면 다음과 같습니다.

  • result1 = ++number1;에서 result1 = 3이므로, number1은 2에서 증가한 값입니다.

    • number1--; 실행 전에 number1 = 3이어야 합니다.
  • result2 = number2--;에서 result2 = 6이므로, number2는 감소하기 전 6이어야 합니다.

    • ++number2; 실행 후 number2 = 6이 되어야 하므로, 원래 값은 5입니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com