Why I get a compiler error here:
int a = 2147483647 + 10;
and not here, if I'm performing the same operation:
int ten = 10;
int b = 2147483647 + ten;
I'm learning the usage of checked and the MSDN web site doesn't clear why the OverflowException is raised in the first code snippet:
By default, an expression that contains only constant values causes a compiler error if the expression produces a value that is outside the range of the destination type. If the expression contains one or more non-constant values, the compiler does not detect the overflow.
It only explains the behavior but not the reasons for that behavior. I'd like to know what happens under the hood.