C언어,ARM

while(len--)의 함정

안녕1999 2020. 1. 11. 22:53

while(len--)

{

    ...

}

 

위 코드는 문제가 발생할 소지가 있는 코드입니다.

아래와 같이 사용해야합니다.

while(len)

{

    len--;

    do_somthing(len);

}

 

이유는, while()조건을 검사하고, len=0인 경우에는 while()문의 do_somthing(len);코드를 실행하지 않습니다.

그러나, len의 값은 -1이 된 상태입니다.

len변수가 다른곳에서도 쓰인다면, 0이 아닌 -1값이 되어, 오동작을 할 수 있습니다.

 

요약 : while(), if() 안에서는 ++, --등의 증감 연산자를 사용하지 말자.