在双重类型的范围:
double dbl1 = (double.MinValue + double.MaxValue) + double.MaxValue;
double dbl2 = double.MinValue + (double.MaxValue + double.MaxValue);
第一个是double.MaxValue,第二个是double.Infinity
关于double类型的精度:
double dbl1 = (double.MinValue + double.MaxValue) + double.Epsilon;
double dbl2 = double.MinValue + (double.MaxValue + double.Epsilon);
现在dbl1 == double.Epsilon,而dbl2 == 0。
在字面上阅读的问题:-)
在检查模式下:
checked
{
int i1 = (int.MinValue + int.MaxValue) + int.MaxValue;
}
i1是int.MaxValue
checked
{
int temp = int.MaxValue;
int i2 = int.MinValue + (temp + temp);
}
(注意使用temp变量,否则编译器会直接给出错误…技术上甚至这将是一个不同的结果:-)正确编译vs不编译)
这抛出一个OverflowException …结果是不同的:-)(int.MaxValue对异常)