Ifelse语句的c语言问题求答 越详细越好 希望用萌新能听懂的讲解 谢谢!

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

}

这样看明白了不