为什么我在这里会收到编译器错误:
int a = 2147483647 + 10;
如果我执行相同的操作,那么这里就不是正确的位置:
int ten = 10;
int b = 2147483647 + ten;
我正在学习使用“checked”,但MSDN网站没有清楚地解释为什么第一个代码片段会引发OverflowException:
默认情况下,一个只包含常量值的表达式,在目标类型范围之外产生值时会导致编译器错误。如果表达式包含一个或多个非常量值,则编译器不会检测到溢出。这只解释了行为而不是原因。我想知道背后发生了什么。