unsigned 와 signed 값을 비교할때 어떻게 작동이되는지요?

kkb110의 이미지

unsigned int a=0;
--a;
signed int b=30;

...
.....

if( a >b)
{
......
}
else
{
....
}

이런식의 구문이 있다면 if (a>b)는 어떻게 작동하게 되죠?

a가 unsigned int 이니 unsigned int 형식으로 비교가 이루어지는건가요?

doldori의 이미지

예, 그렇습니다. 산술형의 형변환에 대한 규칙은 좀 복잡해서 저도 외우지는 못하지만
둘 중에서 "더 큰 타입"으로 변환된다고 생각하면 대충 맞습니다.
double > float > long > int, unsigned > signed 정도 되지요.
(기술적으로 정확한 표현은 아닙니다.)