不理解为什么输出是2

img


这个else不是要和最近一个没有匹配的if配在一起吗,第一个if后面的值为false,难道还执行吗,不太懂。才开始学习,所以问问大家

下面代码给你注释讲解,可以参考一下

if (x < y) {        // 2 < -1, 此处判断结果为false,if判断不成立不能继续进入执行
    if (y < 0) {    // 此处代码因为条件不成立 不执行
        z = 0;      // 此处代码因为条件不成立 不执行
    } else {        // 此处代码因为条件不成立 不执行
        z += 1;     // 此处代码因为条件不成立 不执行,注意,如果条件进入了 此处恒等为 z = z + 1;
    }
}
Console.Writeln()   // 最终输出结果为初始化的z的值,即为2
 

把括号补充好你看看,第一个条件是false,括号里面的就不会执行了,z的值就没变依旧是2

    if (x < y) {
        if (y < 0) {
            z = 0;
        } else {
            z += 1;
        }
    }
    Console.Writeln()

这个if添加判断后应该是

if (x < y) {
  if (y < 0) {
      z = 0
  } 
  else {
      z += 1
  }
}

因为2 > -1
所以最外层的if都不会进入
所以z的值不变 为2
采纳