In C, -2147483648
is not an integer constant. 2147483648
is an integer constant, and -
is just a unary operator applied to it, yielding a constant expression. The value of 2147483648
does not fit in an int
(it’s one too large, 2147483647
is typically the largest integer) and thus the integer constant has type long
, which causes the problem you observe. If you want to mention the lower limit for an int
, either use the macro INT_MIN
from <limits.h>
(the portable approach) or carefully avoid mentioning 2147483648
:
printf("PRINTF(d) \t: %d\n", -1 - 2147483647);