2015-11-06 179 views
1

以下代码的输出不同于第二个代码的输出 有人可以解释问题吗?for循环C#中使用括号和不使用它之间的区别

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

+ 
++ 
+++ 
++++ 

我知道这行代码的作品,但我不明白的支架使两个码有什么区别?

+1

如果不指定大括号将考虑第一条语句直接到for语句作为内部的for循环可重复。 –

+2

看起来像某种功课。为什么你不使用调试器来找出你自己? – Dom84

+0

或者你是一名Python程序员。 :)在Visual Studio中,我总是使用ctrl + k,ctrl + d来格式化文档,然后您还会看到嵌套的if/for/class /任何代码会更好。 –

回答

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

如果包括在环路一个声明,卷曲brackes可以省略。但使用它们是总是一个更好的方法。

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

+0

感谢兄弟我明白了 – moji

+0

_thanks兄弟我明白了_你是机器人吗? ;)@moji –

2

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

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

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

+0

感谢兄弟我知道了 – moji

3

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

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

缩进意味着什么编译器是只为你

+0

感谢兄弟我明白了 – moji

+0

你使用Python来得多! – kame

+0

@kame Yeb bro它的真实性:) – moji

相关问题