(-2147483647) 2147483647 (-2147483647 - 1)
2147483648 does not fit in an int, so the c compiler gives the literal a wider type. 2147483647 and -(2147483647) both fit. only INT_MIN needs the 1-less trick.
