if 语句中的 if 语句
本文关键字:if 语句 | 更新日期: 2023-09-27 18:34:06
我试图理解这段代码背后的逻辑
int i = 13;
if (i<10) if (i>=5) Console.WriteLine("Case number 1");
else Console.WriteLine("case number 2");
Console.ReadLine();
所以我知道这不是正确的代码(因为应该有括号来使这个应用程序工作(。
我知道如何通过修改它来使这段代码"干净">
但我试图了解 Csharp 实际上如何处理这个错误的代码,以及执行此代码背后的逻辑
从我读到的内容来看,else 适用于最接近的 if,在这种情况下(如果>= 5(。
因此,当我写 i = 3 时,它会读取第一个 if 并转到第一个 else 和控制台给我"Case nr 2"。
当我写i = 7
时,它读到第二个并给我"案例 nr 1">
当我写i = 13
时,它什么也没给我
根据我在研究时的理解,它应该去其他,因为 2 if 之前已经测试过,所以从我的理解来看,当它测试第一个如果它应该去其他,如果它测试两个如果,它也应该去第二个,因为 if 真的没有意义。
如果它只测试第二个,如果它应该给我案例编号。
所以我的思维方式肯定是错误的,但我找不到为什么它没有显示任何东西
这就是你的if循环的工作方式(我加入了你的代码并添加了大括号(:
int i = 13;
if (i<10) {
if (i>=5) {
Console.WriteLine("Case number 1");
} else {
Console.WriteLine("case number 2");
}
Console.ReadLine();
所以 inner else 对应于 if 与条件 i >= 5
因此,当您的 i = 13 时,它的行为如下:
is i < 10? No
因此永远不要输入 if 并执行下一个语句,即 Console.ReadLine();
你的代码是这样的:
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
一些提示:
- 考虑使用一些众所周知的代码约定
- 使用缩进使代码更具可读性
- 使用左大括号和右大括号,无论您的块包含一个语句还是多个语句
- 尽量不要在代码中使用一些魔术文本,这里的"案例"和"案例"可能会在测试场景中给您带来以后的问题