因为x>y,所以所有的内部if语句都无法执行,只执行了printf语句,所以z的值还是5
//因为x>y,进不了if语句
if(x<y)
{
//内部条件无法执行
if(y<0)
z=0;
else //else对应内部if,因为else与最近的if语句匹配
z=z+1;
}
if(x<y)不成立,后面啥也没干啊,所以z还是5
后面两个if...else...是配对的,属于第一个if的作用范围
代码整理一下格式,应该看的更清楚。所以代码编写还是要规范一些比较好
void main()
{
int x=2,y=-1,z=5;
if(x<y)
{
if(y<0)
z=0;
else
z=z+1;
}
printf("%d\n",z);
}
因为x<y为假的,因此进不去后面的if和else,这题最终就是直接输出z变量的值。
你写的代码相对于下面的
if(x<y)
{
if(y<0)
z=0;
else
z=z+1;
}
这是if和else的关系,如果没有{}包裹,那么C语言中认为,esle是与其距离最近的上一个if是一个组合,在本例中,else z= z+1和if(y<0)是一个组合,这个组合在if(x<y)这个判断语句中,也就是说,当x<y是true时,下面的if...else...才会被执行,但是在本例中x<y是false(因为x>y),所以,if(x<y)后面的if...else...组合没有被执行。所以最后z还是z,值没有改变。
如有帮助,请采纳一下,谢谢。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632