我试图理解这段代码背后的逻辑
int i = 13;
if (i<10) if (i>=5) Console.WriteLine("Case number 1");
else Console.WriteLine("case number 2");
Console.ReadLine();
所以我知道这不是正确的代码(因为应该有括号使这个应用程序有效)。
我知道如何制作此代码&#34;清洁&#34;通过修改
但是我试图理解Csharp实际上是如何使用这个错误的代码行事,执行此代码背后的逻辑
根据我的阅读,其他适用于最接近的if,在这种情况下(如果&gt; = 5)。
因此,当我写i = 3时,它会读取第一个if并转到第一个,而控制台会给我&#34; Case nr 2&#34;。
当我写i = 7
时,它会读取第二个并给我&#34;案例nr 1&#34;
当我写i = 13
时,它什么都没给我
根据我的理解,在研究它时应该从2开始,如果之前已经过测试,那么根据我的理解,当它测试第一个是否应该去其他地方,如果它同时测试两个&# 39,因为if不是真的有道理,所以它也应该排在第二位。
如果它只测试第二个是否应该给我案例编号。
所以我的思维方式确实是错的,但我无法找到它为什么不显示任何东西
答案 0 :(得分:5)
这就是你的if循环的工作原理(我修改了代码并添加了大括号):
int i = 13;
if (i<10) {
if (i>=5) {
Console.WriteLine("Case number 1");
} else {
Console.WriteLine("case number 2");
}
Console.ReadLine();
所以内部的else对应if条件i >= 5
因此当你的i = 13时,它表现得像:
is i < 10? No
因此,如果并执行下一个陈述,即Console.ReadLine();
答案 1 :(得分: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号
一些提示: