Int不能保存int.MaxValue的值

时间:2012-10-21 10:31:53

标签: c#

我有以下两种方法:

public int Average (params int[] array)
{
    if (array.Length > 0)
    { 
        double avg = Sum(ints) / arr.Length;        
        return (int)avg;             
    }        
    return 0;
} 

public int Sum(params int[] array2)
{
    int total = 0;
    for (int n = 0; n < array2.Length; n++)
    {
        total += arr[n];
    }
    return total;
}

但出于测试目的,我尝试在数组中添加int.MaxValue / 2int.MaxValue / 2 + 4.。但是为什么单元测试失败,尽管两个值的总和将小于int.MaxValue

1 个答案:

答案 0 :(得分:5)

  

数组[]中的两个值: - int.MaxValue / 2&amp; int.MaxValue / 2 + 4 ..但是当我运行单元测试时它失败了,虽然这两个值的总和将小于int.maxvalues?

不,先生,总和将超过int.MaxValue

(int.MaxValue / 2) + (int.MaxValue / 2 + 4) == int.MaxValue + 4 //...

你超越了int max值。

简单数学:(x / 2)+(x / 2 +4)== x + 4