以下代码的输出与第二段代码的输出不同,谁能解释一下这个问题?
for(int i = 1; i <= intInput; i++)
{
for(int j = 1; j<=i; j++)
{
Console.Write('+');
Console.WriteLine();
}
}
if intInput is 4 Ouput is:
+
+
+
+
代码2:
for(int i = 1; i <= intInput; i++)
{
for(int j = 1; j<=i; j++)
Console.Write('+');
Console.WriteLine();
}
if intInput is 4 Ouput is:
+
++
+++
++++
我知道这行代码的工作原理 但我不明白这两行代码的括号有什么不同?
当你写。
for(int j = 1; j <= i; j++)
{
Console.Write('+');
Console.WriteLine();
}
既是 Console
行得通 j
循环出来。
但当你写下
for(int j = 1; j <= i; j++)
Console.Write('+');
Console.WriteLine();
只有 第一 Console
工作,直到 j
循环出来的。所以第二个等于。
for(int j = 1; j<=i; j++)
{
Console.Write('+');
}
Console.WriteLine();
如果有 一个 循环中包含的语句,大括号可以省略。但使用它们是 始终 更好的方法
你的第二种情况实际上意味着。
for(int i = 1; i <= intInput; i++)
{
for(int j = 1; j<=i; j++)
{
Console.Write('+');
}
Console.WriteLine();
}
缩进对编译器来说没有任何意义 它只对你有意义。
循环有一个范围。如果你不包含大括号,只有第一行在循环中。如果你有大括号,里面的所有内容都在循环的范围内。
在这种情况下,第一个例子向控制台写了一个 "+",以及内部循环的每一次迭代都写了一行新的内容。
第二种情况,内循环只在每次内循环迭代时执行 "+"的写入。外循环增加新行。
如果改变1与 i 然后再循环,就可以了
for (int j = **i**; j <= i; j++)
Console.Write('+');
Console.WriteLine();