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

  • 17 minutes to read

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

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

1. 할당 연산자(Assignment Operator)

할당 연산자(Assignment Operator)는 변수에 데이터를 대입하는데 사용됩니다. 할당 연산자는 대입 연산자로도 부릅니다. = 기호는 C 언어에서 같다는 의미가 아니라 오른쪽에 있는 값 또는 식의 결과를 왼쪽 변수에 할당하는 걸 지시합니다. 할당 연산자의 종류는 다음과 같습니다.

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

다음은 할당 연산자의 사용 예입니다.

  • A = B
    • 변수 A에 변수 B의 값을 할당합니다.
  • A = A + BA += B
    • AB를 더한 후, 그 값을 다시 A에 할당합니다.
  • A = A - BA -= B
    • A에서 B를 뺀 후, 그 값을 다시 A에 할당합니다.
NOTE

age = 21 형태의 식에서 age를 좌측값(lvalue) 또는 오브젝트라고 하고 21을 우측값(rvalue) 또는 그냥 값이라고 합니다.

2. 할당 연산자 사용하기

지금까지 우리가 사용해 온 변수 선언 후 초기화할 때 사용한 = 연산자가 바로 데이터를 할당하는 할당 연산자입니다. char 데이터 타입으로 문자 하나를 보관하듯이 char* 데이터 타입을 사용하면 문자열을 보관할 수 있습니다.

코드: assignment_operator.c

//[?] 할당(대입) 연산자: 변수에 특정 데이터 타입에 특정 값으로 초기화
#include <stdio.h>

int main(void)
{
    char* name = "C 언어"; // name 변수에 문자열을 대입합니다.
    char* version = "C2x"; // version 변수에 문자열을 대입합니다.

    printf("%s - %s\n", name, version);

    return 0;
}
C 언어 - C2x

처음 나오는 내용이지만, char* 데이터 타입을 사용하여 문자열을 대입(할당)해서 사용할 수있습니다. C 언어의 버전은 C99, C11, C17 형태로 년도에 맞는 버전을 표시합니다. 최신 버전의 C 언어는 C2x 형태로 표시합니다.

3. 변숫값 서로 바꾸기

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

코드: swap_demo.c

#include <stdio.h>

int main(void)
{
    int i = 100;
    int j = 200;
    int temp;

    printf("처음: %d, %d\n", i, j); // 100, 200

    //[?] 변숫값 서로 바꾸기
    temp = i;   //[A] 임시 변수에 i 값 담기
    i = j;      //[B] i 값에 j 값으로 덮어쓰기
    j = temp;   //[C] j에 i 값이 담겨 있던 temp 값으로 덮어쓰기

    printf("변경: %d, %d\n", i, j); // 200, 100

    return 0;
}
처음: 100, 200
변경: 200, 100

실행 결과는 다음 의사 코드를 참고하세요.

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

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

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

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

4. 변수의 값을 1 증가시키기

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

코드: increment_number.c

//[?] 정수형 변수의 값을 1 증가
#include <stdio.h>

int main(void)
{
    int num = 10; // 처음에는 10으로 초기화 
    num = num + 1; // 1 증가
    printf("%d\n", num); // 11

    return 0;
}
11

num = num + 1; 형태의 코드는 num 변수에 1을 더 한 후 다시 num 변수에 할당하여, 최종적으로 num 변수의 값을 1 증가시켜 줍니다.

5. 변수의 값을 1 감소시키기

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

코드: decrement_number.c

//[?] 정수형 변수의 값을 1 감소
#include <stdio.h>

int main(void)
{
    int num = 10; // 처음에는 10으로 초기화
    num = num - 1; // 1 감소
    printf("%d\n", num); // 9

    return 0;
}
9

num = num - 1; 형태의 코드는 num 변수에 1을 뺀 후 다시 num 변수에 할당하여, 최종적으로 num 변수의 값을 1 감소시켜 줍니다.

char 형식 변수에 증가/감소 연산자 사용하기

char 형식의 변수에도 증가(++) 또는 감소(--) 연산자를 사용할 수 있습니다. char 형식의 변수는 정수 값을 저장하므로, 이를 이용하면 문자 코드에 대한 연산도 가능하게 됩니다. 이번에는 char 형식의 변수에 증가 및 감소 연산자를 사용하는 간단한 예제를 제공하고 해당 코드가 어떻게 작동하는지 설명하도록 하겠습니다.

코드: char_increment_decrement.c

#include <stdio.h>

int main(void)
{
    char c = 'A';

    printf("원래의 문자: %c\n", c);

    // 문자 변수에 증가 연산자 사용
    c++;
    printf("증가 연산 후의 문자: %c\n", c);

    // 문자 변수에 감소 연산자 사용
    c--;
    printf("감소 연산 후의 문자: %c\n", c);

    return 0;
}
원래의 문자: A
증가 연산 후의 문자: B
감소 연산 후의 문자: A

이 코드에서는 char 형식의 변수 c에 증가 연산자와 감소 연산자를 사용하였습니다. 처음에 c는 'A'를 가지고 있습니다. 이때 'A'의 ASCII 코드는 65입니다. 증가 연산자를 사용하면, c의 ASCII 코드 값이 1 증가하므로, 'B'의 ASCII 코드인 66이 됩니다. 따라서 c는 'B'를 가지게 됩니다. 같은 원리로, 감소 연산자를 사용하면, c의 ASCII 코드 값이 1 감소하므로, 다시 'A'의 ASCII 코드인 65가 됩니다. 따라서 c는 다시 'A'를 가지게 됩니다. 이렇게 char 형식의 변수에 증가 또는 감소 연산자를 사용하면, 해당 변수가 가지는 문자 코드가 변경되어 다른 문자를 표현하게 됩니다. 이는 문자 코드의 순서를 이용한 연산에 유용하게 사용될 수 있습니다.

6. 할당 연산자 축약형 사용하기

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

코드: shortcut_operator.c

//[?] 할당 연산자 축약형 사용하기  
#include <stdio.h>

int main(void)
{
    int x = 3; // x를 3으로 초기화
    int y = 3; // y를 3으로 초기화

    x = x + 2;  // 기본형 방식으로 2 증가
    y += 2;     // 축약형 방식으로 2 증가

    printf("x: %d, y: %d\n", x, y); // x: 5, y: 5

    return 0;
}
x: 5, y: 5

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

다음 두 코드는 동일한 기능을 합니다.

x = x + 2;
x += 2;
TIP

축약형(속기, 약칭, shorthand)

x = x + 1; 코드를 x += 1로 변경해 주는 기능을 축약형이라고 하고 영어로 shorthand로 표현합니다.

7. += 연산자와 -= 연산자 함께 사용하기

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

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

코드: shortcut_operator_demo.c

//[?] 할당(대입) 연산자: =, +=, -=, *=, /=, %=
#include <stdio.h>

int main(void)
{
    int a = 3;
    int b = 5;

    b += a; // 누적: b변수에 a변수의 값을 누적
    printf("%d\n", b); // 8

    // 현재 시점의 b는 8

    b -= a; // 감산: b에서 a를 뺀 후 다시 b에 할당
    printf("%d\n", b); // 5

    return 0;
}
8
5

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

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

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

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

  • ++(증가 연산자): 변숫값에서 1을 더합니다.
  • --(감소 연산자): 변숫값에서 1을 뺍니다.

이 강의에서 증감 연산자는 ++ 증가 연산자, -- 감소 연산자로 발음합니다.

9. 증감 연산자인 증가 연산자 사용하기

하나의 변수의 값을 1씩 증가시키는 연산자를 증가 연산자라고 합니다. 반대로 변수의 값을 1씩 감소시키는 연산자를 감소 연산자라고 합니다. 이 둘을 가르켜 일반적으로 증감 연산자라고 부릅니다.

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

코드: increment_operator.c

//[?] 증가 연산자: 정수 자료형 변수의 값을 1 증가
#include <stdio.h>

int main(void)
{
    int num = 100; // 100으로 초기화 
    ++num; // 1 증가
    printf("%d\n", num); // 101

    return 0;
}
101

++num; 코드에 의해서 num 변수의 값을 1 증가시킬 수 있습니다.

10. 증감 연산자인 감소 연산자 사용하기

이번에는 정수 타입의 변수의 값을 1 감소시키는 감소 연산자를 사용해보겠습니다.

코드: decrement_operator.c

//[?] 감소 연산자: 정수 자료형 변수의 값을 1 감소
#include <stdio.h>

int main(void)
{
    int num = -100;
    --num; // 1 감소
    printf("%d\n", num); // -101

    return 0;
}
-101

--num; 코드에 의해서 num 변수의 값을 1 감소시킬 수 있습니다.

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

증감 연산자는 변수 앞에 붙으면 전위 증감 연산자로 부르고 변수 뒤에 붙으면 후위 증감 연산자라고 합니다.

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

12. 전위 증감 연산자 사용하기

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

코드: prefix_operator.c

//[?] 전위(Prefix) 증감 연산자: 우선순위가 높음
#include <stdio.h>

int main(void)
{
    int i = 3; // i 변수를 3으로 초기화 

    int j = ++i; // 3에서 4로 증가 후 j 변수에 4를 할당

    printf("%d\n", j); // 4

    return 0;
}
4

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

13. 후위 증감 연산자 사용하기

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

코드: postfix_operator.c

//[?] 후위(Postfix) 증감 연산자: 우선순위가 낮음
#include <stdio.h>

int main(void)
{
    int x = 3;

    int y = x++; // y에 x 대입 후, x를 1 증가

    printf("%d\n", y); // 3

    return 0;
}
3

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

14. 장 요약

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

문제 풀이: 변수 연산과 출력

정보처리기능사 실기 기출 문제: 변수 연산과 출력

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