2014-12-13 84 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();