第一个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)