此代码的输出是
version
但我没有得到阶乘部分。我的意思是0 1 2 3
(即1!=1
),因此不满足条件,因此请输入i factorial equals to 1
和2
,但它们会得到打印作为输出?
3
答案 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
在这里,我们可以清楚地看到例程将打印i
到4
所以你有
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