If x<y是假不成立 往下看 y>0为真执行z=0,不是应该不执行else语句嘛 那么输出z应该为0 若不执行else语句z=z+1 也应该是1 为什么答案等于2 请解释详细一些 是小白 谢谢 越详细越好!
解析如下:
如有帮助,请采纳一下,谢谢。
main()
{
int x =2,y =-1,z =2;
if(x<y) //x=2,y = -1,x<y 不成立,所以if的代码块不执行
if(y<0) z = 0; //else与其距离最近的if是一对,if(y<0) z=0;else z+=1;这些是一个完整的语句。
else z+=1; //这个完整的语句,作用范围在if(x<y)下面,因为x<y不成立,所以这个if else语句不执行
printf("%d \n",z);
}
//上面的代码等价于:
main()
{
int x =2,y =-1,z =2;
if(x<y) //x=2,y = -1,x<y 不成立,所以if的代码块不执行
{
if(y<0)
z = 0; //else与其距离最近的if是一对,if(y<0) z=0;else z+=1;这些是一个完整的语句。
else
z+=1; //这个完整的语句,作用范围在if(x<y)下面,因为x<y不成立,所以这个if else语句不执行
}
printf("%d \n",z);
}
第二个if 和 else语句在第一个if成立的情况下才会执行
if(con1)
{
if(cond2)
else
}
这样看明白了不