In the C standard, arithmetic for unsigned integers is performed modulo 2 bits wide . So, for a 32-bit integer, negation will be taken modulo 2 32 = 4294967296.
For a 32-bit number, then the value you get if you cancel the number n will be 0-n = 4294967296-n . In your specific case, if unsigned int is 32 bits wide, you will get 4294967296-1 = 4294967295 = 0xffffffff (a number with all bits set).
The relevant text in standard C is given in ยง6.2.5 / 9:
a result that cannot be represented by the resulting unsigned integer type is reduced modulo by a number that is greater than the largest value that can be represented by the resulting type
source share