c语言if条件判断 为什么不选d

img


第五题为什么选b不是D啊求解析 第一个if直接跳过 然后第二个if里面 Z不是等于0嘛

这道题考查的是多个嵌套的if-else语句如何结合(就近原则)
别看else与第1个if对齐了,但是它与第2个if最近,所以第2个if和else是一组。

虽然题目中的写法是符合语法的,但是强烈建议初学者不要这样写。我们在写代码时,if语句后面一定要加上花括号{ }将要执行的语句包起来,提高可读性,不容易出错!不要嫌麻烦,可读性真的很重要!
我将代码重新整理一下:

    int x=2,y=-1,z=2;
    if (x<y){
        if (y<0){
            z=0;
        }else{
            z+=1;
        }
    }
    printf("%d\n",z);


相当于
if(x<y)
{
if(y<0)
z = 0;
else
z += 1;
}
由于x=2,y=-1,所以if条件不满足,直接执行最后的输出啦,z值没有改变

第二个if是嵌套在第一个if里面的呀