Why so?
Because your program has an undefined behavior (using %d which is for int to print an unsigned) - so you can expect anything to happen.
Why the infinite loop? Because an unsigned int is always >= 0.
What is the concept of unsigned integer?
It's an... unsigned integer. A whole number which is non-negative.