【问题标题】:Difference between using brackets in for loop C# and not using it在 for 循环 C# 中使用括号与不使用括号之间的区别
【发布时间】:2015-11-06 10:29:30
【问题描述】:

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

代码 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 语句的第一条语句在 for 循环中是可重复的。
  • 看起来像是某种家庭作业。为什么不使用调试器来找出自己?
  • 或者你是一个 Python 程序员。 :) 在 Visual Studio 中,我总是使用 ctrl+k、ctrl+d 来格式化文档,然后您还可以更好地看到嵌套的 if/for/class/whatever 代码。

标签: c# for-loop difference brackets


【解决方案1】:

当你写作时;

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?

【讨论】:

    【解决方案2】:

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

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

    缩进对编译器没有任何意义,它只对你自己而言

    【讨论】:

    • 你用 Python 太频繁了!
    • @kame Yeb bro 这是真的:)
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      如果在第二个循环中用 i 更改 1,那么它的工作原理相同

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-28
        相关资源
        最近更新 更多