본문 바로가기
알고리즘

size_t 언더플로우 주의

by Jason95 2021. 7. 18.
for (size_t i = 0; i < R; i++)
{
   for (size_t j = 0; j < C; j++)
      {
         if (i == 0 && j == 0) {
            if (i - 1 >= 0 && map[i - 1][j] != -1) { // A
               cout << "출력 " << i << endl;
            }
            if (i >= 1 && map[i - 1][j] != -1) { // B
               cout << "미출력 " << i << endl;
            }
         }
      }
   }
}

B처럼 출력되지 않기를 바랬는데

A처럼 출력이 되버리는 이유는

A에서 size_t에 대한 언더플로우가 발생하기 때문 (unsigned int)

따라서 이런 경우 signed int를 사용해야 함