산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 언어 증감 연산자 마스터하기: 사용법 & 모범 사례

C - 증감 연산자

증가 연산자(++)는 변수 값을 1 증가시키고, 감소 연산자(--)는 변수 값을 1 감소시킵니다.

증감 연산자는 C에서 카운트 루프(for 루프) 구성에 자주 사용됩니다. 배열 순회와 포인터 연산에도 활용됩니다.

++와 -- 연산자는 단항 연산자이며, 변수에 접두사(prefix) 또는 접미사(postfix)로 사용할 수 있습니다.

증감 연산자 예제

다음 예제는 증감 연산자를 다양한 변형으로 사용하는 여러 문을 포함합니다.

#include <stdio.h>
int main() {
    int a = 5, b = 5, c = 5, d = 5;
    a++; // 접미사 증가
    ++b; // 접두사 증가
    c--; // 접미사 감소
    --d; // 접두사 감소
    printf("a = %d\n", a);
    printf("b = %d\n", b);
    printf("c = %d\n", c);
    printf("d = %d\n", d);
    return 0;
}

출력

이 코드를 실행하면 다음 출력이 나옵니다.

a = 6
b = 6
c = 4
d = 4

예제 설명

즉, a++는 ++a와 같은 효과를 가지며, 둘 다 변수 a의 값을 1 증가시킵니다. 마찬가지로 a--는 --a와 같은 효과가 있습니다.

a++; 표현식은 a = a + 1; 문과 동등하게 취급할 수 있습니다. 여기서는 우변 표현식이 a에 1을 더하고 결과를 다시 a에 할당함으로써 a 값이 1 증가합니다.

마찬가지로 b--;는 b = b - 1;과 동등합니다.

증가 연산자 유형

증가 연산자는 전위 증가(pre-increment)와 후위 증가(post-increment) 두 가지 유형이 있습니다.

전위(Prefix) 증가 연산자

표현식에서 전위 증가 연산자는 변수 값이 사용되기 전에 변수 값을 1 증가시킵니다.

문법

++variable_name;

예제

다음 예제에서 전위 증가 연산자를 사용하며, x 값이 1 증가한 후 증가된 값이 표현식에 사용됩니다.

#include <stdio.h>
int main() {
    int x = 10;
    int y = 10 + ++x;
    printf("x = %d, y = %d\n", x, y);
    return 0;
}

실행 시 출력:

x = 11, y = 21

후위(Postfix) 증가 연산자

표현식에서 후위 증가 연산자는 변수 값이 사용된 후에 변수 값을 1 증가시킵니다.

문법

variable_name++;

예제

다음 예제에서 후위 증가 연산자를 사용하며, x 값이 표현식에 사용된 후 1 증가합니다.

#include <stdio.h>
int main() {
    int x = 10;
    int y = 10 + x++;
    printf("x = %d, y = %d\n", x, y);
    return 0;
}

실행 시 출력:

x = 11, y = 20

감소 연산자 유형

감소 연산자는 전위 감소(pre-decrement)와 후위 감소(post-decrement) 두 가지 유형이 있습니다.

전위(Prefix) 감소 연산자

표현식에서 전위 감소 연산자는 변수 값이 사용되기 전에 변수 값을 1 감소시킵니다.

문법

--variable_name;

예제

다음 예제에서 전위 감소 연산자를 사용하며, x 값이 1 감소한 후 감소된 값이 표현식에 사용됩니다.

#include <stdio.h>
int main() {
    int x = 10;
    int y = 10 + --x;
    printf("x = %d, y = %d\n", x, y);
    return 0;
}

실행 시 출력:

x = 9, y = 19

후위(Postfix) 감소 연산자

표현식에서 후위 감소 연산자는 변수 값이 사용된 후에 변수 값을 1 감소시킵니다.

문법

variable_name--;

예제

다음 예제에서 후위 감소 연산자를 사용하며, x 값이 표현식에 사용된 후 1 감소합니다.

#include <stdio.h>
int main() {
    int x = 10;
    int y = 10 + x--;
    printf("x = %d, y = %d\n", x, y);
    return 0;
}

실행 시 출력:

x = 9, y = 20

증감 연산자 추가 예제

예제 1

다음 예제는 접두사/접미사 증감 연산자 사용을 강조합니다.

#include <stdio.h>
int main() {
    char a = 'a', b = 'M';
    int x = 5, y = 23;
    printf("a: %c b: %c\n", a, b);
    a++;
    printf("후위 증가 a: %c\n", a);
    ++b;
    printf("전위 증가 b: %c\n", b);
    printf("x: %d y: %d\n", x, y);
    x--;
    printf("후위 감소 x: %d\n", x);
    --y;
    printf("전위 감소 y: %d\n", y);
    return 0;
}

출력

a: a b: M
후위 증가 a: b
전위 증가 b: N
x: 5 y: 23
후위 감소 x: 4
전위 감소 y: 22

위 예제는 전위/후위 연산자가 피연산자 변수 값에 같은 효과를 가짐을 보여줍니다. 그러나 이 ++ 또는 -- 연산자가 표현식에서 다른 연산자와 함께 나타날 때는 다르게 동작합니다.

예제 2

다음 코드에서 a와 b 변수 초기값은 같지만, printf() 함수는 다른 값을 표시합니다.

#include <stdio.h>
int main() {
    int x = 5, y = 5;
    printf("x: %d y: %d\n", x, y);
    printf("후위 증가 x: %d\n", x++);
    printf("전위 증가 y: %d\n", ++y);
    return 0;
}

출력

x: 5 y: 5
후위 증가 x: 5
전위 증가 y: 6

첫 번째 경우, printf() 함수는 x 값을 출력한 후 값을 증가시킵니다. 두 번째 경우, 증가 연산자가 먼저 실행되어 printf() 함수가 증가된 값을 출력에 사용합니다.

증감 연산자 연산자 우선순위

C에는 여러 연산자가 있습니다. 표현식에서 여러 연산자가 사용되면 우선순위 순서대로 실행됩니다. 증감 연산자는 다른 연산자와 함께 사용될 때 다르게 동작합니다.

표현식이 증감 연산자와 다른 연산자로 구성되면 증감 연산이 먼저 수행됩니다. 후위 증감 연산자는 전위 증감 연산자보다 우선순위가 높습니다.

참고: C 연산자 우선순위

예제 1

#include <stdio.h>
int main() {
    int x = 5, z;
    printf("x: %d \n", x);
    z = x++;
    printf("x: %d z: %d\n", x, z);
    return 0;
}

출력

x: 5
x: 6 z: 5

x++가 x 값을 6으로 증가시키므로 z도 6일 거라 예상할 수 있습니다. 하지만 결과는 z가 5입니다. 이는 대입 연산자가 후위 증가 연산자보다 우선순위가 높기 때문입니다. 따라서 x의 기존 값이 z에 할당된 후 x가 증가합니다.

예제 2

#include <stdio.h>
int main() {
    int x = 5, y = 5, z;
    printf("x: %d y: %d\n", x, y);
    z = ++y;
    printf("y: %d z: %d\n", y, z);
    return 0;
}

출력

y: 5
y: 6 z: 6

결과가 혼란스러울 수 있는데, y와 z 값이 모두 6입니다. 이유는 전위 증가 연산자가 대입 연산자보다 우선순위가 높기 때문입니다. 따라서 y가 먼저 증가하고 새 값이 z에 할당됩니다.

연산자 결합성도 중요한 역할을 합니다. 증감 연산자의 결합성은 왼쪽에서 오른쪽입니다. 따라서 단일 표현식에 여러 증감 연산자가 있으면 가장 왼쪽 연산자부터 실행되어 오른쪽으로 이동합니다.

예제 3

이 예제에서 대입 표현식은 전위와 후위 연산자를 모두 포함합니다.

#include <stdio.h>
int main() {
    int x = 5, y = 5, z;
    z = x++ + ++y;
    printf("x: %d y: %d z: %d\n", x, y, z);
    return 0;
}

출력

x: 6 y: 6 z: 11

이 예제에서 첫 번째 연산은 ++y (y가 6이 됨)입니다. 두 번째로 + 연산자가 x(5)와 y를 더해 결과를 z에 11로 할당하고, 그 후 x++가 x를 6으로 증가시킵니다.

루프에서 증가 연산자 사용

C에서 for 루프 가장 일반적인 문법은 다음과 같습니다.

for (init_val; final_val; increment) {
    statement(s);
}

예제

루프 본문은 초기값과 최종값 사이의 변수 모든 값에 대해 실행되며, 각 라운드 후 증가합니다.

#include <stdio.h>
int main() {
    int x;
    for (x = 1; x <= 5; x++) {
        printf("x: %d\n", x);
    }
    return 0;
}

출력

x: 1
x: 2
x: 3
x: 4
x: 5

C 언어

  1. C 파일 입출력 완벽 가이드: 열기, 읽기, 쓰기, 위치 제어, 바이너리 처리
  2. C 변수, 데이터 타입, 상수 – 실전 가이드
  3. C 입출력(I/O) 마스터: scanf()와 printf() 완전 정복
  4. C 프로그래밍: 타입 캐스팅과 변환 마스터하기
  5. 2024년 윈도우/맥/리눅스 최고의 C IDE 21선 완벽 가이드
  6. C# Windows Forms 개발 실전 튜토리얼: 데스크톱 앱 만들기
  7. C# 연산자 완전 정복: 산술, 관계, 논리, 비트, 할당 연산자 총정리
  8. C++ 배열 마스터하기: 선언, 초기화, 접근, 실전 예제
  9. C 다차원 배열 마스터: 2차원 & 3차원 배열 완벽 이해
  10. C++ 시그널 처리 마스터하기: 안전한 인터럽트 관리와 깔끔한 프로그램 종료