我试图理解这段代码背后的逻辑
int i = 13;
if (i<10) if (i>=5) Console.WriteLine("Case number 1");
else Console.WriteLine("case number 2");
Console.ReadLine();,所以我知道这不是正确的代码(因为应该有方括号使这个应用程序工作)。
我知道如何通过修改使这段代码“干净”
--但我正在努力理解Csharp实际上是如何处理这个错误的代码的,这是执行这个代码的逻辑
根据我所读到的,在这种情况下(如果是>= 5),其他内容适用于最近的if。
因此,当我写i=3时,它读取第一个if,然后转到第一个,控制台给我"Case nr2“。
当我写i = 7时,它读到了第二个字母,并给出了"Case nr 1“
当我写i = 13的时候,它什么也没有给我
根据我在研究的时候所理解的,它应该是从2if之前测试开始的,所以从我所理解的当它测试第一个(如果它应该被测试到),如果它测试两个(如果是‘s),它也应该是第二个(如果是),因为if's没有真正的意义。
如果它只测试第二个,如果它应该给我的案件编号。
所以我的思维方式肯定是错的,但我找不到为什么它什么也没出现
发布于 2014-12-13 17:11:12
您的代码如下:
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。
一些提示:
发布于 2014-12-13 17:09:06
这就是if循环的工作方式(我缩进了代码并添加了大括号):
int i = 13;
if (i<10) {
if (i>=5) {
Console.WriteLine("Case number 1");
} else {
Console.WriteLine("case number 2");
}
Console.ReadLine();因此,内部的其他部分对应于if和条件i >= 5,因此当您的i= 13时,它的行为如下:
is i < 10? No因此,永远不要输入的if和执行下一个语句,即Console.ReadLine();
https://stackoverflow.com/questions/27461402
复制相似问题