c - sizeof() operator in if-statement -
#include <stdio.h> main() { if (sizeof(int) > -1) printf("true"); else printf("false"); }
it prints false
. why doesn't sizeof() return value in if
?
sizeof
not function, it's operator. parentheses not part of operator's name.- it's failing because value generated has unsigned type
size_t
, causes "the usual arithmetic conversions" in-1
converted unsigned, in case it's large number.
basically you're comparing 4 > 0xffffffffu
, or close @ least. see question details.
Comments
Post a Comment