for나 while 문에서 변화식에 후위연산자를 사용하는 이유가 궁금합니다.
++i를 사용해도 상관없는건지요 아님 차이점이 궁금합니다,
예)그림 27-2 for반복문의 기본 형태에서도 그렇고, 27.10 퀴즈및 28장 while문에서도 i++를 사용하는 이유가 궁금합니다.
반복문에서는 후위 연산자를 관례처럼 사용합니다.
전위 연산자나 후위 연산자나 사용에 차이는 없습니다.
반복문을 실행한 다음에 조건을 변경하기 위해 1 증가시키는 것이고,
이 연산이 다른 과정에 영향을 주지 않습니다. 따라서 i++이나 ++i나 차이는 없습니다.
가능하면 관례에 따라 후위 연산자를 쓰세요. 현업에서도 대부분 후위 연산자를 관례로 쓰는데, 홀로 전위 연산자를 쓰는 이상한 코딩 습관을 가진 사람으로 보이기 쉽습니다.
에서 설명한 것처럼 전위 연산자가 필요한 경우에만 쓰면 됩니다.
num3 = num1++;
이 경우에 num1 = num1 + 1이고, 이 결과를 저장할 임시 변수가 내부적으로 생성됩니다.
for 반복문에서 i++로 쓰면 임시 변수가 하나 더 생성되고, ++i로 쓰면 임시 변수가 생성되지 않으니 이게 더 효율적이라는 내용이 있습니다.
간혹 프로그래밍 면접에서 이런 걸 문제로 내는 사람도 있습니다만,
현대 C/C++ 컴파일러는 사람이 하는 미세한 최적화보다 더 뛰어난 최적화를 수행하고 있으며 반복문에서 i++를 썼어도 내부에 side effect(부수 효과)가 없다는 것을 확인하면 알아서 최적화해서 ++i로 컴파일합니다.
따라서 30년 전 미신을 지금도 주장하는 사람이 있다면 무시하기 바랍니다. 현대 컴파일러와 기술의 발전, 최신 정보를 습득하는 것을 게을리하는 사람일 수 있습니다. 30년 전 미신에 사로 잡힌 사람에게서는 배울 것이 없습니다.
답변 너무 고맙습니다. 자세한 설명이 이해에 큰 도움이 되었고, 상세한 부연 설명까지 해주셔서 몰랐던 상식도 알게 되었습니다.
고맙습니다.