Kas*_*tel 0 .net c# if-statement
我试图理解这段代码背后的逻辑
int i = 13;
if (i<10) if (i>=5) Console.WriteLine("Case number 1");
else Console.WriteLine("case number 2");
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
所以我知道这不是正确的代码(因为应该有括号使这个应用程序工作).
我知道如何通过修改它来使这段代码"干净"
但是我试图理解Csharp实际上是如何用这个错误的代码行事的,这个代码的执行背后的逻辑
根据我的阅读,在这种情况下(如果> = 5),else适用于最接近的if.
因此,当我写i = 3时,它会读取第一个if并转到第一个,然后控制台给我"Case nr 2".
当我写i = 7它时读取第二个并给我"Case nr 1"
我写的i = 13时候什么也没给我
根据我的理解,在研究它时应该从2开始,如果之前已经过测试,那么根据我的理解,当它测试第一个是否它应该去其他地方,如果它测试它是否应该到第二个也是if是不是真的有意义.
如果它只测试第二个,如果它应该给我案例编号.
所以我的思维方式肯定是错的,但我找不到为什么它没有出现任何东西
这就是你的if循环的工作原理(我的代码和添加的大括号):
int i = 13;
if (i<10) {
if (i>=5) {
Console.WriteLine("Case number 1");
} else {
Console.WriteLine("case number 2");
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
因此内部的else对应于if条件i >= 5因此当你的i = 13时,它表现得像:
is i < 10? No
Run Code Online (Sandbox Code Playgroud)
因此,永远不要输入if并执行下一个语句,即 Console.ReadLine();