Unit testing 진행 중 예상 했던 값보다 1큰 값이 얻어지는 기이한 현상이 발생했다.원인을 분석해보니 for loop 조건문 내에 후위 연산자가 문제였다. 사건의 시작cnt 값이 0이 될 때까지 for~loop를 도는 코드가 있다.근데 동작이 묘하게 이상했다....for (p = s; (cnt-- != 0) && *p != '\0'; ++p) { process(*p);}... 무엇이 문제일까? 맞춰보자 원인은 무엇?원인은 for~loop 조건문 내 후위 연산자!for~loop 이후 cnt 값을 사용하는 로직이 있다면 개발자는 cnt가 0인줄 알고 사용하지만 실제로는 -1이거나 overflow된 값이 됨이 값을 사용하게 되면 undefined behavior! 평소 생각지 못한 오류여서..