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

为什么结果是2呢

这边是先判断出x<y不成立所以只执行printf语句了,你这边第二个if语句是上个if语句里面嵌套的语句所以不执行了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-26
else是和第一个 if(x<y)组成一对,不是和第二个,加上括号吧
#include<stdio.h>
void main()
{int x=1,y=-1,z=2;
if(x<y)
{
if(y<0)
z=0;
}
else
z+=1;
printf("%d\n",z);
}

结果是2;
第2个回答  2011-03-26
else只和前边最近的且没有配对的if结合,这样写也许会更清楚一点
#include<stdio.h>

void main()
{
int x=1,y=-1,z=2;
if(x<y)
if(y<0) z=0;

else z+=1;
printf("%d\n",z);
}
第3个回答  2011-03-26
不满足所有条件 所以z没有被重新赋值 做z等于2
相似回答