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

问题描述 投票:1回答:4

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

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:

+
++
+++
++++

我知道这行代码的工作原理 但我不明白这两行代码的括号有什么不同?

c# for-loop difference brackets
4个回答
5
投票

当你写。

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

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

阅读。为什么认为省略卷曲的牙套是不好的做法?


4
投票

你的第二种情况实际上意味着。

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

缩进对编译器来说没有任何意义 它只对你有意义。


2
投票

循环有一个范围。如果你不包含大括号,只有第一行在循环中。如果你有大括号,里面的所有内容都在循环的范围内。

在这种情况下,第一个例子向控制台写了一个 "+",以及内部循环的每一次迭代都写了一行新的内容。

第二种情况,内循环只在每次内循环迭代时执行 "+"的写入。外循环增加新行。


0
投票

如果改变1与 i 然后再循环,就可以了

for (int j = **i**; j <= i; j++)
   Console.Write('+');
   Console.WriteLine();
© www.soinside.com 2019 - 2024. All rights reserved.