C# Int不能保存Int.MaxValue的值

C# Int不能保存Int.MaxValue的值,c#,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) {

我有以下两种方法:

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;
}
public int Average(params int[]数组)
{
如果(array.Length>0)
{ 
双平均=总和(整数)/阵列长度;
返回(int)平均值;
}        
返回0;
} 
公共整数和(参数int[]array2)
{
int-total=0;
for(int n=0;n
但出于测试目的,我尝试在数组中添加
int.MaxValue/2
int.MaxValue/2+4.
。但是为什么单元测试失败了,尽管两个值的总和将小于
int.MaxValue

数组[]中有两个值:-int.MaxValue/2&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

在调试器中仔细检查,看看您的期望与实际情况的偏差。我发现
int
无法容纳
int.MaxValue
的结论很奇怪
int.MaxValue
是一个
int
类型的常量,那么它是如何工作的呢?另外,有一个不可能且错误的最大值有什么意义呢?作为旁注:
double avg=Sum(ints)/arr.Length
不会像您预期的那样工作。它除以两个整数。例如,如果
Sum(整数)==3
arr.Length==2
那么
avg
将是
1
而不是
1.5
。旁注2:Linq内置了函数
Sum
Average
,它们已经满足了您的要求。这里的挑剔:
int.MaxValue
是一个奇数,所以
int.MaxValue/2*2!=int.MaxValue
!不过,你答案的核心是正确的+1.