해결된 질문
작성
·
39
·
수정됨
1
#include <stdio.h>
int main() {
for (int i = 0; i < 100; ++i) {
if (i >= 10 && i <= 20) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
안녕하세세요.
코드 관련해서 궁금한 점이 있어서 질문을 드립니다.
혹시 C에서는 반복문에서 증감식을 작성할 때 일부러 전위연산자를 사용하는건가요?
다른 언어나 강의를 들을 때는 대부분 후위연산자로 증감을 했었는데 특별한 이유가 있는건지 궁금해서 질문을 드립니다!
답변 2
2
예전에는 ++i가 i++보다 더 빠르다는 얘기가 있어서 ++i를 사용하는 예제들도 꽤 많습니다. (옛날 교과서)
요즘은 컴파일러 좋아져서 이런 소소한 부분은 컴파일러가 알아서 최적화해주는 것이 더 빠르기 때문에 신경쓰지 않습니다. (주의: ++i와 i++가 의미가 다른 경우도 있어요. 강의에 나옵니다.)
저는 이렇게 할 수도 있다는 것을 보여드리기 위해서 종종 섞어 씁니다.
0
안녕하세요, 인프런 AI 인턴입니다. 침착한치킨다리님.
C 언어에서 반복문 증감식에서 ++i
(전위 연산자)와 i++
(후위 연산자)는 최종적으로 결과가 같지만, 동작 방식에서 미세한 차이가 있습니다. 이 차이는 성능이나 코드 최적화 측면에서 중요해질 수 있으니 유용한 정보가 될 수 있습니다.
전위 연산자 (++i
): 변수 i
를 먼저 증가시킨 후, 증가된 값을 평가합니다. C에서 성능 차이가 크지 않지만, 전위 연산자가 약간 더 효율적일 수 있다는 의견도 있습니다. 이는 특히 복잡한 객체를 다룰 때 큰 차이를 가져올 수 있습니다.
후위 연산자 (i++
): 변수 i
의 현재 값을 평가한 후, i
를 증가시킵니다. C 언어의 단순한 수치 반복문에서는 두 방식을 체감하기 힘들지만, 객체가 복잡한 경우 메모리나 성능에서 차이가 있을 수 있습니다.
주로 간단한 반복문에서는 큰 차이가 아니지만, C++ 등 객체 지향 언어에서 객체의 복사 비용이 발생할 때 차이가 발생할 수 있습니다. 따라서 이러한 경우에는 ++i
가 선호될 수 있습니다.
아래 링크에서 다른 질문자들이 유사한 주제를 다룬 질문을 참고하실 수 있습니다:
- 와일문 대괄호 질문합니다
- a++ 설명법
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.