当赋值大于C#中的int最大值时,如何确定整数值

本文关键字:何确定 整数 最大值 大于 赋值 中的 int | 更新日期: 2023-09-27 17:58:21

我们有一个实例,其中分配给整数的值大于int最大值(2147483647)。它不会抛出错误,只是给整数指定一个较小的数字。这个数字是如何计算的?

这已经通过将int更改为long来解决,但我对如何计算较小的值并将其分配给int感兴趣。

当赋值大于C#中的int最大值时,如何确定整数值

int包含一个32位数字,这意味着它有32位0或1的二进制数字(第一位表示0的加号和1的减号),例如:

1 in decimal  == 0000 0000 0000 0000 0000 0000 0000 0001 as int32 binary
2 147 483 647 == 0111 1111 1111 1111 1111 1111 1111 1111

所以,如果你增加int.MaxValue,你会得到下一个结果:

2 147 483 648 == 1000 0000 0000 0000 0000 0000 0000 0000

在二的补码表示中,这个二进制数等于int.MinValue-2 147 483 648

int.MaxValue:    2,147,483,647

循环中的逻辑跟踪找到的最低数字。您可以使用int.MaxValue来启动非常高的值,然后任何较低的数字都是有效的。

样本代码:

using System;
class Program
{
static void Main()
{
int[] integerArray = new int[]
{
    10000,
    600,
    1,
    5,
    7,
    3,
    1492
};
// This will track the lowest number found
int lowestFound = int.MaxValue;
foreach (int i in integerArray)
{
    // By using int.MaxValue as the initial value,
    // this check will usually succeed.
    if (lowestFound > i)
    {
    lowestFound = i;
    Console.WriteLine(lowestFound);
    }
}
}
}

输出

10000
600
1