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

마스터 C 증가 및 감소 연산자:사용법 및 모범 사례

C - 증가 및 감소 연산자

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

증가 및 감소 연산자는 C에서 계산 루프(for 루프 포함)를 구성하는 데 자주 사용됩니다. 또한 배열 탐색 및 포인터 연산에도 적용됩니다.

++ 및 -- 연산자는 단항 연산자이며 변수에 대한 접두어 또는 위치표시로 사용될 수 있습니다.

증가 및 감소 연산자의 예

다음 예에는 다양한 변형이 있는 증가 및 감소 연산자의 사용을 보여주는 여러 명령문이 포함되어 있습니다.

#include <stdio.h>
int main() {
 int a = 5, b = 5, c = 5, d = 5;
 
 a++; // postfix increment
 ++b; // prefix increment
 c--; // postfix decrement
 --d; // prefix decrement
 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을 더하고 그 결과를 다시 1로 대입하여 "a"의 값을 1씩 증가시키는 식입니다.

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

증분 연산자의 종류

증가 연산자에는 사전 증가라는 두 가지 유형이 있습니다. 및 포스트 증분 .

Pre(접두사) 증분 연산자

표현식에서 사전 증가 연산자는 변수 값을 사용하기 전에 변수 값을 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

포스트(후위) 증분 연산자

표현식에서 후위 증가 연산자는 변수 값을 사용한 후 변수 값을 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(접두사) 감소 연산자

표현식에서 선행 감소 연산자는 변수 값을 사용하기 전에 변수 값을 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

포스트(후위) 감소 연산자

표현식에서 후위 감소 연산자는 변수 값을 사용한 후 변수 값을 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("postfix increment a: %c\n", a);
 
 ++b;
 printf("prefix increment b: %c\n", b);
 printf("x: %d y: %d\n", x, y);
 
 x--;
 printf("postfix decrement x : %d\n", x);
 
 --y;
 printf("prefix decrement y : %d\n", y);
 return 0;
}

출력

이 코드를 실행하면 다음과 같은 출력이 생성됩니다.

a: a b: M
postfix increment a: b
prefix increment b: N
x: 5 y: 23
postfix decrement x: 4
prefix decrement 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("postfix increment x: %d\n", x++);
 printf("prefix increment y: %d\n", ++y);
 return 0;
}

출력

코드를 실행하고 출력을 확인하세요 -

x: 5 y: 5
postfix increment x: 5
prefix increment 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"가 증가하기 전에 "x"의 기존 값이 "z"에 할당됩니다.

예시 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의 비트 연산자:AND, OR, XOR, 시프트 및 보수
  2. C에서 상수 포인터 및 상수에 대한 포인터 익히기
  3. C 프로그래밍에서 주석을 작성하는 방법
  4. C++의 다형성
  5. C++ 상속
  6. C++ 변수 및 유형:int, double, char, string, bool
  7. C++ 유형 변환
  8. C의 문자열에 대한 strlen()과 sizeof()의 차이점
  9. C의 함수에 배열 전달
  10. 경력 및 신입생을 위한 상위 50개 C# 인터뷰 질문 및 답변(2021 업데이트)