当赋值大于C#中的int最大值时,如何确定整数值
本文关键字:何确定 整数 最大值 大于 赋值 中的 int | 更新日期: 2023-09-27 17:58:21
我们有一个实例,其中分配给整数的值大于int最大值(2147483647)。它不会抛出错误,只是给整数指定一个较小的数字。这个数字是如何计算的?
这已经通过将int更改为long来解决,但我对如何计算较小的值并将其分配给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