Yes, you are correct
As you say…
uint positiveNumber = 5; uint negativeNumber = -5; // => compiler throws an error
uint only allows zero and positive integers up to a max based on the binary places included in the type.
uint4 (0 to 15) ,
uint8 (0 to 255) ,
uint16 (0 to 65535)
int allows positive and negative integers from a min of minus(-) half the max based on the binary places included in the type, to a max of plus(+) half the max based on the binary places, and including zero.
int4 (-8 to 7) ,
int8 (-128 to 127) ,
int16 (-32768 to 32767)
We should always keep within the restrictions in terms of the range of integers available with a given integer type (signed or unsigned), because the compiler will not always prevent an overflow (a loop from the max limit, back to the min limit) or an underflow (a loop from the min limit back to the max limit).