while(len--)의 함정
C언어,ARM / 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() 안에서는 ++, --등의 증감 연산자를 사용하지 말자.
'C언어,ARM' 카테고리의 다른 글
Visual Studio 2012 - 리소스, 파일 추가후 인식이 잘 안되는 문제 (0) | 2020.01.16 |
---|---|
error C2059: syntax error : 'bad suffix on number' (0) | 2020.01.11 |
I2C 통신속도 계산 (0) | 2020.01.11 |
error C2085: 'xxx' : not in formal parameter list (0) | 2020.01.11 |
CreateFont/CreateFontIndirect 고정폭 폰트, 폰트색상 이상한 문제 (0) | 2020.01.11 |