在for循环C#中使用括号和不使用括号的区别

Difference between using brackets in for loop C# and not using it

以下代码的输出与第二个代码的输出不同 谁能解释一下这个问题?

代码 1:

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 i = 1; i <= intInput; i++)
    {
        for(int j = 1; j<=i; j++)
        {
            Console.Write('+');
        }
        Console.WriteLine();                                    
    }

缩进对编译器没有任何意义,它只对你有用

写的时候;

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();    

如果循环中有一个语句,大括号可以省略。但是使用它们总是更好的方法。

阅读:Why is it considered a bad practice to omit curly braces?

如果在第二个循环中用 i 改变 1 那么它将同样工作

for (int j = **i**; j <= i; j++)
   Console.Write('+');
   Console.WriteLine();