sizeof(int) returns size_t which is as unsigned int.
Usual arithmetic conversions are implicitly performed for common type.
int --> unsigned int --> long --> unsigned long --> long long --> unsigned long long --> float --> double --> long double
int value(-1) is converted to unsigned int as part of implicit conversion.
-1 will be represented as 0xFFFF in 16 bit machine(for example).
So expression becomes,
if(sizeof(int) > -1 ) ==> if(2 > 0xFFFF)
And false is printed. I suggest to try if((int)sizeof(int) > -1 ) for proper result.