Creative Commons License

unsigned type & loop IT



C/C++에는 여러가지 숫자변수형태가 있고, 이는 부호가 있는 것(signed)과 없는 것(unsigned)으로 나눌 수 있다. 오늘 할 이야기는 그 중에 하나 키가 크고요~...가 아니라 부호가 없는 것에 대한 저주스런 이야기이다.
size_t i(delta);
while ( i >= 0 )
{
    // blar blar...
    --i;
}
이 소스는 CPU 100%를 쳐먹으면서 기계를 혹사시킬 것이다. 컴파일러나 라이브러리에 따라 그 구현이 다르겠지만, 보통 size_t는 unsigned long형이다. 십장생. i가 0이어도 루프는 한 번 더 돈다. 마지막에 i가 0이지만 감소연산을 때리면, i는 그것이 가질 수 있는 최대값으로 변모한다. 당연하지... unsigned니까. 결국 저 악마 같은 코드는 무한루프를 도는 것이다.

몇 년을 C/C++로 밥 벌어먹고 살아도 실수는 계속하기 마련인가?!

덧글

  • chadr 2007/10/02 20:53 # 삭제

    if (blar)

    이딴 짓도 하는데 저런것 쯤이야 ㄱ-
  • 샘이 2007/10/04 18:25 #

    chadr// blar가 상수라면 작살. -_-
  • 마로 2007/10/05 11:44 # 삭제

    ....내가 만든 if문의 조건값도 까먹는데
    남이 만든거라면;;;
  • 샘이 2007/10/05 12:55 #

    마로// m_nC 작열!
※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.

Google Adsense

Google Adsense

Google Analytics



C로그팬박스