Why is (sizeof(int) > -1) false? [duplicate]

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).

Leave a Comment