这将是什么以及如何产生?

时间:2017-12-15 11:40:51

标签: c# c#-4.0

此代码的输出是

version

但我没有得到阶乘部分。我的意思是0 1 2 3 (即1!=1),因此满足条件,因此请输入i factorial equals to 12,但它们会得到打印作为输出?

3

1 个答案:

答案 0 :(得分:2)

好的,让我们看看:

   int b = 8, a = 32;

   ... 

   a / b * 2 == 32 / 8 * 2 == 4 * 2 == 8

这就是if ((a / b * 2) == 2) 永远不会成功的原因,因此我们可以删除此if并将循环简化为

   for (i = 0; i <= 10; i++)
     if (i != 4)                 // i != means "i doesn't equal", not "i factorial equals"
         Console.Write(i + " "); // print 0, 1, 2, 3
     else
         break;                  // break on 4 

在这里,我们可以清楚地看到例程将打印i4所以你有

   0 1 2 3

旁注:为了避免此类错误,格式化您的代码并让编译器帮助您:

   i!=4     // Bad, it can be read in different ways (not equal or factorial)
   i != 4   // i is not equal to 4
   i! = 4   // assign 4 to i factorial: compile time error
   i! == 4  // i factorial equals to 4: compile time error - C# doesn't have factorials