All non-suffixed decimal integer literals are signed, but they can not be negative. Perhaps non-negative is what you meant by "unsigned", but I think it's important to make a distinction -- they are not of an unsigned int
type.
Once you've got a positive literal, the unary operator is applied. This is why INT_MIN
is often defined as:
#define INT_MIN (-2147483647 - 1)
Because you can't represent 2147483648 with a signed int
on this platform.