Lee*_*ong 1 c# console-application calculation
编辑:这次粘贴了正确的代码......
我正在尝试计算一个数字的阶乘.在这个例子中,我输入数字5.
尝试这种方法,给了我一个巨大的负数:
static void Main(string[] args)
{
int consoleInput = int.Parse(Console.ReadLine());
for (int i = 1; i < consoleInput; i++)
{
consoleInput = consoleInput * i;
}
Console.WriteLine(consoleInput);
}
Run Code Online (Sandbox Code Playgroud)
输出 -1899959296
然而:
static void Main(string[] args)
{
int consoleInput = int.Parse(Console.ReadLine());
int result = consoleInput;
for (int i = 1; i < consoleInput; i++)
{
result = result * i;
}
Console.WriteLine(result);
}
Run Code Online (Sandbox Code Playgroud)
输出 120
如果我两次输入5,则第一次输出为-1899959296,第二次输出为120.
有人可以解释原因吗?
问题是你consoleInput在每个循环中改变' ':
for (int i = 1; i < consoleInput; i++)
{
consoleInput = consoleInput * i;
}
Run Code Online (Sandbox Code Playgroud)
现在for每次都会检查新值.
它变为负面的原因是溢出条件.
编辑:
它变得如此之大的原因是因为循环'永远'不会结束,因为你检查的值会在每个循环上增长.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |