在for循环C#中使用括号与不使用它之间的区别

时间:2015-11-06 10:29:31

标签: c# for-loop difference brackets

以下代码的输出与第二个代码的输出不同 有人可以解释这个问题吗?

代码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:

+
++
+++
++++

我知道这行代码是如何工作的,但我不明白括号在两个代码上有什么区别?

4 个答案:

答案 0 :(得分:4)

写作时;

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?

答案 1 :(得分:3)

第二种情况实际上意味着:

    for(int i = 1; i <= intInput; i++)
    {
        for(int j = 1; j<=i; j++)
        {
            Console.Write('+');
        }
        Console.WriteLine();                                    
    }

缩进对编译器没有任何意义,只适合你

答案 2 :(得分:2)

循环有一个范围。如果不包括大括号,则只有第一行在循环中。如果你有大括号,那么内部的一切都属于循环的范围。

在这种情况下,第一个示例在控制台上写一个“+”,并在内循环的每次迭代中写一个新行。

第二种情况,内部循环仅在每次内部迭代时执行“+”写入。外循环添加新行。

答案 3 :(得分:0)

如果在第二个循环中用 i 更改1,则其将保持不变

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