C에서 i++ 대 ++i
이 기사에서는 C에서 접두사 증분 대 접미사 증분 연산자 (일명 ‘i ++‘대 ‘++ i’)를 사용하는 몇 가지 방법을 설명합니다.
C에서++i
와i++
표기법의 주요 차이점
이 두 표기법의 기본 부분은 피연산자를 증가시키는 증가 단항 연산자++
입니다. i
, 1 씩 증가 연산자는 접두사++i
로 피연산자 앞에 올 수도 있고 접두사 연산자 -i++
로 피연산자 뒤에 올 수 있습니다.
표현식에서++
연산자로 증가 된 변수 값을 사용하면 약간 비정상적인 동작이 발생합니다. 이 경우 접두사 및 접미사 증분은 다르게 작동합니다. 즉, 접두사 연산자는 값이 사용되기 전에 피연산자를 증가시키는 반면 접미사 연산자는 값이 사용 된 후에 피연산자를 증가시킵니다.
결과적으로i++
표현식을 인수로 사용하는printf
함수는i
값이 1 씩 증가하기 전에 출력합니다. 반면에 접두사 증가 연산자++i
가있는printf
는 다음 예제 코드에서 보여 주듯이 첫 번째 반복에서 1이되는 증가 된 값을 인쇄합니다.
#include <stdio.h>
#include <stdlib.h>
int main() {
int i = 0, j = 0;
while ((i < 5) && (j < 5)) {
/*
postfix increment, i++
the value of i is read and then incremented
*/
printf("i: %d\t", i++);
/*
prefix increment, ++j
the value of j is incremented and then read
*/
printf("j: %d\n", ++j);
}
printf("At the end they have both equal values:\ni: %d\tj: %d\n\n", i, j);
exit(EXIT_SUCCESS);
}
출력:
i: 0 j: 1
i: 1 j: 2
i: 2 j: 3
i: 3 j: 4
i: 4 j: 5
At the end they have both equal values:
i: 5 j: 5
C에서 루프 문에 일반적으로 허용되는 스타일로++i
표기법 사용
접미사 및 접두사 연산자는for
루프 문에서 사용할 때 동일한 기능 동작을 갖습니다. 아래 샘플 코드에서 두 개의 for
반복이 실행되므로 k
값이 동일하게 인쇄됩니다.
for
루프에서 접두사 증분보다 접두사 증가를 사용하는 것이 성능 효율성이 더 좋다는 주장이 여러 가지 있지만 대부분의 애플리케이션에서 효과적인 시간 차이는 무시할 수 있습니다. 우리는 일반적으로 받아 들여지는 스타일로 선호하는 방법으로 접두사 연산자를 사용하는 습관을 가질 수 있습니다.
그러나 이미 접미사 표기법을 사용하고 있다면 해당 최적화 플래그와 함께 최신 컴파일러를 사용하면 비효율적 인 루프 반복이 자동으로 제거된다는 점을 고려하십시오.
#include <stdio.h>
#include <stdlib.h>
int main() {
for (int k = 0; k < 5; ++k) {
printf("%d ", k);
}
printf("\n");
for (int k = 0; k < 5; k++) {
printf("%d ", k);
}
printf("\n\n");
exit(EXIT_SUCCESS);
}
출력:
0 1 2 3 4
0 1 2 3 4
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook