Unsigned integers are always non-negative, that is greater than or equal to 0. When you subtract 1 from 0 in an unsigned integer type you end up with MAX_INT.
Therefore, your for loop will never terminate.
However, you need to use "%u" not "%d" in your printf if you want it to print the unsigned value rather than the signed value.