for문에 증감연산자 질문입니다.
3758
작성한 질문수 1
for문 예제를 보면
for (int count = 0; count < 10; ++count)
에서 증감연산자 ++가 count앞에 오는걸 알 수 있는데요,
이 for문은
for (int count = 0; count < 10; count++)
로 바꾸어도 같은 결과가 출력이 되는것 같은데
++count를 할때와 count++를 할때의 차이점이 있을까요?
답변 2
5
안녕하세요, ybkim1987님!
증감연산자
int a = 1;
a가 1일 경우, ++a를 출력하면 2가 출력되지만 a++를 출력하면 1이 출력됩니다.
전위 증감연산자는 값을 바로 증가시킨 후 자신의 객체가 그대로 반환되기 때문에 속도가 빠릅니다.
반면에 후위 증감연산자는 다음 행부터 해당 객체에 변화가 생겨야하므로 객체를 복사해 저장하는 부분이 필요합니다.
그렇기 때문에 후위 증감연산자가 전위 증감연산자보다 속도가 느리다는 특징이 있습니다.
상대적으로 전위 증감연산자가 후위 증감연산자보다 낭비가 적으며 for문의 반복 횟수가 많을수록 전위 증감연산자의 경우가 더 효율적으로 실행됩니다.
다시 질문으로 돌아가서,
ybkim1987님께서 예시로 들어주신 for문의 경우 증감식이 for문의 일부로 존재하고 있지만 해당 식이 실행될 때는 단독으로 실행됩니다.
조건식과 증감식은 동시에 실행되는 것이 아닌, 따로 실행되기 때문에 둘 중 어떤 형태를 쓰더라도 for문에서 차이가 없습니다.
만약 while문으로 루프문을 순회할 경우에는 차이가 생깁니다.
혹시 궁금한 점이 있으시다면 댓글 남겨주세요.
도움이 되셨으면 좋겠습니다. :)
3
현지님께서 말씀해주신 것처럼 "단독 문장으로" 사용할 때는 약간의 속도에 차이가 있다는 것 외에는 별다른 차이가 없습니다.
https://www.inflearn.com/questions/108838
속도의 차이가 왜 발생하는지는 위 링크를 정독해보시면 이해가 되실 것 같습니다.
전위 증감, 후위 증감 연산자의 작동 원리를 적어놓은 답변입니다.
변수가 메모리에 저장되는 것을 알려주는 강의가 어떤강의였죠
1
461
1
메모리 주소 10진수로 출력
1
650
1
클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.
1
496
1
여러가지 리턴 타입에 관한 강의가 어떤 걸까요?
1
529
1
메모리 주소에 관한 질분
0
676
1
인터페이스 클래스에서 reportError의 매개변수에 대해 궁금한 것이 있습니다.
0
547
1
형변환 오버로딩에서 const 관련 질문이 있습니다.
0
439
1
Digit 뒤에 reference를 사용하는 이유
0
504
1
4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결
0
319
1
dat파일이...
0
535
1
TODO:대입 연산자 오버로딩에 대한 소스코드입니다.
0
640
1
복사 생성자 관련 질문이 있습니다.
0
450
1
수업 중 궁금한점이 있습니다.
1
386
1
라이브러리자체가 이해가 되지 않습니다.
0
558
1
마지막 예제 질문
0
299
1
증감연산자 위치에 따른 수행 순서 질문입니다.
0
371
1
단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.
1
408
1
friend함수 관련 질문이 있습니다.
0
308
1
operator+ 정의부분에서 궁금한 것이 있습니다.
0
444
1
3분 17초 질문
0
346
1
함수에 값을 대입한다는 개념이 이해가 되지 않습니다.
0
443
1
int getvalue() const에서 const는 왜 뒤에 붙는건가요?
0
440
2
const Something &st에서 const를 빼면 안되나요?
0
296
1
friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??
1
489
1





