以下程序的输出结果是

img


答案是不是错了?我算了半天-1小于0不应该直接知行z+=1吗

第一个if后面没有分号,所以后面的if和else都是相当于嵌套在第一个if里面的,因为x是大于y的,条件不成立,所以就不会执行里面的ifelse,就自己输出z了

題目沒有縮進, 所以看不清楚層次關係, 第二个if語句屬于第一个if語句;
而第一个if判斷條件不成立, 所以跳過整个if結構;
對了, else有就近匹配原則, 所以也屬于內層的if結構, 也被跳過;
就是說, 啥都沒發生, 就打印z了, 所以是原值不變
加上{}看得清楚

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

選 C2

else 是跟着最后一个if,所以只用判断第一个if,直接输出结果,所以是结果应该是2 (C)