undefined,
. ,
2147483648 32- int.
: "
, .
, ,
: int, long int;
int, undefined.
++ 0x .
If LONG_MAX is greater than 2147483648, then the literal type is long, and the minus should give the correct value. Otherwise, if the compiler already supports long ones (and since then you have declared a variable of this type, you need to assume that it does), type 2147483648 is long, and minus should give the correct value. If the compiler does not support long and long - only 32 bits, then your code is undefined, so everything that the compiler does is “correct”.
source
share