2014-12-13 115 views
0

我試圖理解這段代碼如果if語句

int i = 13; 
if (i<10) if (i>=5) Console.WriteLine("Case number 1"); 
else Console.WriteLine("case number 2"); 
Console.ReadLine(); 

背後的邏輯語句,我知道這是不是正確的代碼(因爲應該有支架,使這個應用程序的作品)。

我知道如何使這個代碼「乾淨」通過修改

但我想了解Csharp的實際上是如何表現這個erronated代碼,邏輯這段代碼的執行背後

從我所讀的內容來看,如果在這種情況下(如果> = 5),else就適用於最接近的情況。

所以,當我寫我= 3它讀取第一個如果去到第一個和控制檯給我「情況nr 2」。

當我寫i = 7讀取第二,給我「案例NR 1」

當我寫i = 13它給我什麼

從我的理解,同時研究它應該去的其他人,因爲2,如果公司之前已經過測試,所以從我理解的時候,它測試第一個是否應該去else,如果測試它是否應該去第二個,因爲if沒有意義。

如果它只測試第二個,如果它應該給我的病例號碼。

所以我在我的思維方式肯定是不對的,但我不能找到它爲什麼不顯示任何

+0

這將打印什麼,因爲'else'設置爲'如果(I> = 5)' – Icepickle 2014-12-13 17:07:38

+0

然後,當int是13,那麼它應該執行else Console.WriteLine(「case number 2」);它不是 – 2014-12-13 17:09:44

+0

它不會到達那裏,第一個如果失敗,所以你直接進入ReadLine部分 – Icepickle 2014-12-13 17:10:49

回答

2

你的代碼是這樣的:

if (i < 10) 
{ 
    if (i >= 5) { 
     Console.WriteLine("Case number 1"); 
    } 
    else { 
     Console.WriteLine("case number 2"); 
    } 
} 

Console.ReadLine(); 

所以如果i[5,10)它是區分號碼1,如果是在(-Infinity,10)它是區分號2

一些提示:

  • 考慮使用一些衆所周知的代碼約定
  • use ind使代碼更具可讀性
  • 使用開放和關閉花括號不管你有一個語句塊還是多個語句塊
  • 儘量不要在代碼中有一些神奇的文本,這裏的「Case」和「case」是的東西,可能會導致以後的問題你主要是在測試場景
+1

謝謝,並感謝提示 – 2014-12-13 18:34:38

5

這是怎麼了你,如果循環作品(我indended你的代碼,增加了括號) :

int i = 13; 
if (i<10) { 
    if (i>=5) { 
     Console.WriteLine("Case number 1"); 
    } else { 
     Console.WriteLine("case number 2"); 
} 
Console.ReadLine(); 

所以內其他對應於如果與條件i >= 5因此,當你的I = 13,它的行爲,如:

is i < 10? No 

,因此不會進入的,如果和明年執行陳述即Console.ReadLine();