当我写这段代码
Console.WriteLine(-1 * int.MinValue);
Run Code Online (Sandbox Code Playgroud)
要么
int a = -1 * -2147483648;
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
在检查模式下,操作在编译时溢出.
是否有编译时间检查特别是这个值?还是实时计算所有书面表达?
编译器能够在编译时而不是运行时执行(乘法)计算,因此它可以执行.
由于-1 * int.MinValue(-1*-2,147,483,648,因此2,147,483,648)大于int.MaxValue(2,147,483,647),它会给你编译错误.
要证明它不是特殊的声明,请尝试:
Console.WriteLine(-2 * 1073741826);
Run Code Online (Sandbox Code Playgroud)
你会得到同样的行为.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |