C에서 거꾸로 반복하는 올바른 방법, LLM 시대에 더 중요해졌다
Iterating Backwards in C
C에서 배열을 역순으로 순회할 때 size_t 인덱스를 쓰면 i >= 0 조건이 항상 참이 되고, count가 0이면 SIZE_MAX로 넘어가는 버그가 생긴다. ssize_t를 쓰는 우회법도 부호 변환·이식성·승격 문제를 낳는다. 저자는 for(size_t i = count; i--; )라는 단순한 형태를 제시하며, unsigned 래핑이 C에서 정의된 동작임을 설명한다. LLM이 생성한 코드에서도 이 실수가 잦다고 지적한다.
C에서 거꾸로 반복하는 진짜 올바른 방법은 이렇다: for(size_t i = count; i--; ){ } 훨씬 간단하지 않은가!