카테고리
게시일
Dec 17, 2025
이런 의문이 들 수도 있다. signed도 사실은 unsigned의 2의 보수 표현이므로, 사칙연산도 똑같은 로직으로 수행된다. 그런데 왜 unsigned와 signed를 굳이 나눠놨을까?
일단 printf()에서 signed는 음수로 출력을 해준다는 점은 있다. 하지만 언어적으로 unsigned와 signed를 나눠놓은 보다 근본적인 이유는 “비교”연산에서의 행동 때문이다.
int arr[100]; unsigned char i=99; while(i>=0){ arr[i]=0; i--; } // 무한루프
위와 같은 경우, unsigned라면 i=0일때, 다음 루프에서 i=255로 언더플로우된다. 그렇다면 위 코드는 무한루프를 돌게된다. signed라면 종료조건에 맞아 떨어진다는 것을 알 수 있다. 따라서 비교연산에서 signed와 unsigned는 다르게 취급되어야 한다.