#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 但我在编译器上结果是3 百度别人说只执行printf 为什么啊 那个else 为什么不执行 求大神解答在线等
首先说明一下,这道题目的答案却是是 3。
我在编译器运行了一下你的代码:
接下来分析一下这个题目的流程:
1、在if(x < y)这个判断条件中,x==1, y==-1,条件是不成立的,所以走else分支。
2、在else分支中,z==2,现在 z+=1之后, z==3。
3、在最后一步printf中打印最终结果z == 3。
如果以上回答对你有帮助,请采纳下,谢谢。
追问能不能在帮我看下这个题有以下程序:
#include<stdio.h>
main()
int x=1,y=2,z=3;
if(x>y)
if(y<z)printf("%d",++z);
else printf("%d",++y);
printf("%d\n",x++);
程序的运行结果是______。
A.331
B.41
C.2
D.1
正确答案
D 为什么不执行else
if - else在没有与{ }结合时,else会选择离它最近的哪个if结合。 所以你这个题目的else是与第二个if(离它最近)结合的。
加上对齐方式如下图:
因为第一个if(x > y)不成立, 所以它里面的if - else不会执行的。
现在明白了吗?
感谢
不知道你是从哪里得到的答案说是2的。
最好的检验办法是直接上机编程,编译,运行,看结果。
可以在windows,linux平台下都验证一下追问
有以下程序:
#include<stdio.h>
main()
int x=1,y=2,z=3;
if(x>y)
if(y<z)printf("%d",++z);
else printf("%d",++y);
printf("%d\n",x++);
程序的运行结果是______。
A.331
B.41
C.2
D.1
正确答案
D 和这个类似为什么不执行else
你把代码整理一下就明白了。如下:
#include<stdio.h>main()
{
int x=1,y=2,z=3;
if(x>y)
{
if(y<z)
{
printf("%d",++z);
}
else
{
printf("%d",++y);
}
}
printf("%d\n",x++);
}