The type of -1L is the type of long int, 1u is UNSIGNED INT. When compared, there is an implicit type conversion. In C, when a variable is long int, if the value range of the long INT can overwrite the unsigned int, the variable of the unsigned int; if the value of the long int range cannot overwrite Unsigned Int, two A variable is converted to unsigned long.
Here, it is assumed that INT is 16-bit, and lon int is 32-bit. At this time, the value range of the long int range can cover the unsigned int, so 1U is converted to LONT INT, at this time: -1l <1u.
In the current machine, INT and long are generally 32-bit. At this time, the value range of Long Int cannot override Unsigned Int, in which case two variables are converted into unsigned long. After the conversion, the value of -1L is 0xfffffffff, and the result of comparison is: -1L> 1U.