Вопрос 1

Вопрос по С++: в классе объявлена константа:

   static const unsigned int MAX = 5;

и переменная:

   int top;

значение top = -1, сравнение top >= (MAX-1), оказывается истинным, получается, что при таком сравнении top приводится к unsigned int (что стало для меня небольшим открытием), так собственно вопрос, а как происходит приведение типов в случае, когда в выражении участвуют unsigned типы