2015-11-06 37 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

相關問題