gpt4 book ai didi

c# - 迭代直到达到 int.MaxValue

转载 作者:行者123 更新时间:2023-11-30 18:51:40 25 4
gpt4 key购买 nike

作为一个小测试,我想看看在 C# 控制台应用程序中计算到 int.MaxValue 需要多长时间。每隔几个小时我就会检查进度。昨晚当我认为程序将完成执行时,它正在执行回到 0。我不确定为什么会这样,我想知道是否有人可以向我解释。它所做的是,它数到 2,147,483,647,然后当达到这个值时,它开始倒数到零。尽管它看起来是倒数,但该值是负数。我想知道我是否需要使用 int.MaxValue 的绝对值。不管怎样,我只是好奇是否有人能看到我没有看到的东西。这是我的代码。谢谢

static void Main(string[] args)
{
int maxInt = int.MaxValue;
int numToCountTo = maxInt;
//int numToCountTo = 1000000;

try
{
Console.WriteLine(DateTime.Now);
Console.WriteLine("Press any key to begin.");
Console.ReadLine();

Stopwatch sw = new Stopwatch();
sw.Start();

for (int counter=0; counter <=numToCountTo ; counter++)
{

Console.WriteLine(counter);

}


sw.Stop();
TimeSpan ts = sw.Elapsed;

// Format and display the TimeSpan value.
string elapsedTime = String.Format("{0:00 Hours}, {1:00 Minutes}, {2:00 Seconds}, {3:00 Milliseconds}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);

// ("#,#") places a comma between every 3 digits
Console.WriteLine("It took " + elapsedTime + " to count to " + numToCountTo.ToString("#,#"));
Console.WriteLine("Press Enter key to continue.");
Console.ReadLine();
}
catch (Exception ex)
{
throw new Exception("Exception Reached: " + ex.Message)
}
}

最佳答案

你的 for 循环:

for (int counter=0; counter <=numToCountTo ; counter++)

不正确。它将在 counter <= int.MaxValue 时执行这总是正确的。当它递增时,它将滚动到 int.MinValue并不断递增。

改成

for (int counter=0; counter < numToCountTo ; counter++)

或使用 long对于你的循环计数器:

for (long counter=0; counter <= numToCountTo ; counter++)

您还可以使用 do...while循环,因为循环是在评估中断条件之前执行的:

int counter = 0;
do
{
...
counter++;
}
while(counter < numToCountTo);

关于c# - 迭代直到达到 int.MaxValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14217671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com