unsigned 자료형 if 비교시 주의

백엔드&인프라 추종자·2025년 11월 23일

문제가 되는 예제 코드

unsigned int a = 100
if (a <= -1) {
	printf("과연 이 코드로 진입할까..?\n")
}

문제 상황 설명

ffmpegd 코드 안에서..

구조체안의 변수중 len 을 if 로 비교 하는 상황이었다.

len <= -1 로 비교하고 있었는데.. 항상 저 예외 케이스로 떨어지고 있었다.

변수 타입을 확인해보니까 unsigned 였고,

이것은 문제가 된다.

-1 은 unsigned 에서는 해당 자료형의 최대값이 된다.

항상 "변수 <= 최대값" 비교하고 있었으니, 무조건 저 예외가 실행되고 있었던 것..

비교 조건을 == 0 으로 수정하여 정상 처리 하였다.

profile
AI 답변 글을 주로 올립니다.

0개의 댓글