sizeof(int)
has type size_t
, which is an unsigned integer type.
-1
has type int
, which is a signed integer type.
When comparing a signed integer with an unsigned integer, first the signed integer is converted to unsigned, then the comparison is performed with two unsigned integers.
sizeof(int) > (unsigned int)-1
is false, because (unsigned int)-1
is a very large number on most implementations (equal to UINT_MAX, or the largest number which fits in an unsigned int
).