티스토리 뷰

CS/C

[C언어] 증감연산자

무화과(Fig) 2023. 7. 19. 14:24

목차

 

1. 증감 연산자

2. 후위 연산자 (Postfix Operator)

3. 전위 연산자 (Prefix Operator)


 

 

1. 증감연산자


  • 증가연산자 ++ 감소연산자 -- 로 나뉜다.
  • 전위 ++n 와 후위 n++ 로 나뉜다.
  • 증감 연산자만 단독으로 사용할 때는 큰 차이가 없지만 다른 변수에 할당할 때는 위치에 큰 차이가 난다.

 

 

 

 

2. 후위 연산자 (Postfix Operator)


  • n++; n--;
#include <stdio.h>

int main()
{
    int num1 = 2;
    int num2 = 2;
    int num3;
    int num4;

    num3 = num1++;    // num1의 값을 num3에 할당한 뒤 num1의 값을 1 증가시킴
    num4 = num2--;    // num2의 값을 num4에 할당한 뒤 num2의 값을 1 감소시킴

    printf("%d %d\n", num3, num4);    // 2 2

    return 0;
}
num3 = num1++;
// 풀어서 쓰면 다음과 같다.
num3 = num1;
num1 = num1 + 1;

num4 = num2--;
// 풀어서 쓰면 다음과 같다.
num4 = num2;
num2 = num2 - 1;

 

후위 연산자는 할당 이후에 연산을 하게 되므로 바뀌기 전의 값이 다른 변수에 할당된다. 또한 증감 연산자가 변수 뒤에 쓰이면 연산을 나중에 처리한다는 뜻이다.

 

 

 

 

 

3. 전위 연산자 (Prefix Operator)


  • ++n; --n;
#include <stdio.h>

int main()
{
    int num1 = 2;
    int num2 = 2;
    int num3;
    int num4;

    num3 = ++num1;    // num1의 값을 1 증가시킨 뒤 num3에 할당
    num4 = --num2;    // num2의 값을 1 감소시킨 뒤 num4에 할당

    printf("%d %d\n", num3, num4);    // 3 1

    return 0;
}
num3 = ++num1;
// 풀어서 쓰면 다음과 같다.
num1 = num1 + 1;
num3 = num1;

num4 = --num2;
// 풀어서 쓰면 다음과 같다.
num2 = num2 - 1;
num4 = num2;

 

 

전위 연산자는 할당 전에 연산을 하게 되므로 바뀐 값이 다른 변수에 할당된다. 또한 증감 연산자가 변수 앞에 쓰이면 연산을 먼저 처리한다는 뜻이다.

 

 

변수에 할당하지 않고 함수의 인수로 사용했을 때도 동작 방식은 같다.

<후위연산자를 사용했을 때>
#include <stdio.h>

int main()
{
    int num1 = 2;
    int num2 = 2;

    printf("%d %d\n", num1++, num2--);    // 2 2: num1, num2의 값을 먼저 출력한 뒤 증감 연산자 동작
    printf("%d %d\n", num1, num2);        // 3 1: 증감 연산자가 동작한 결과

    return 0;
}

실행결과
2 2
3 1


<후위연산자를 사용했을 때>
#include <stdio.h>

int main()
{
    int num1 = 2;
    int num2 = 2;

    printf("%d %d\n", num1++, num2--);    // 2 2: num1, num2의 값을 먼저 출력한 뒤 증감 연산자 동작
    printf("%d %d\n", num1, num2);        // 3 1: 증감 연산자가 동작한 결과

    return 0;
}

실행결과
2 2
3 1

'CS > C' 카테고리의 다른 글

[C언어] 자료형, 형식 지정자, 연산자  (0) 2023.07.25
[C언어] 조건문과 루프  (0) 2023.07.13
[C언어] 문자열  (0) 2023.07.05
[C언어] C 기초  (1) 2023.07.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함