#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++);
}
程序的运算结果是?
麻烦写一写解析。
第1个回答 推荐于2016-05-18
运行结果的是1,将x输出了。你的程序可以理解为,
#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++);
}
因为,if(x>y)判断语句下面的if相当是嵌套在第一个if里面,而else要与和它最近的if,也就是与if(y<z),保持一直,也就是说,整个程序可以理解为:
#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++);
}追问
#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++);
}
因为,if(x>y)判断语句下面的if相当是嵌套在第一个if里面,而else要与和它最近的if,也就是与if(y<z),保持一直,也就是说,整个程序可以理解为:
#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++);
}追问
那最后运算x++之后,x不应该等于2吗?
追答这个问题就涉及到x++和++x的区别了,x++是先用x,在加法,这个时候整个语句完成之后x的值就是2了。而++x是先加,再使用。就是使用的的顺序不一样。x++,先使用再加,++x是先加再使用。
追问就是说,先输出x=1之后在执行x++,事实上x+1就不起什么作用了是吗?
就是说,先输出x=1之后在执行x++,事实上x+1就不起什么作用了是吗?
本回答被提问者和网友采纳第2个回答 2014-08-03
//代码写得不规范,我给你整一下
# include <stdio.h>
int main(void)
{
int x = 1, y = 2, z = 3;
if (x>y)//X不大于Y,所以,IF管的语句不会执行
if(y<z)printf("%d", ++z);//这样写你可能会比较清楚.if能管1个语句,但一个if和else或多个是一个语句.
else printf("%d", ++y);
printf("%d\n",x++);//这句一定执行
return 0;
}
# include <stdio.h>
int main(void)
{
int x = 1, y = 2, z = 3;
if (x>y)//X不大于Y,所以,IF管的语句不会执行
if(y<z)printf("%d", ++z);//这样写你可能会比较清楚.if能管1个语句,但一个if和else或多个是一个语句.
else printf("%d", ++y);
printf("%d\n",x++);//这句一定执行
return 0;
}
第3个回答 2014-08-03
#include<stdio.h>
void 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++);
}
结果是1,我帮你把格式调整了一下,你应该就明白了
void 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++);
}
结果是1,我帮你把格式调整了一下,你应该就明白了
第4个回答 2014-08-03
#include<stdio.h>
int main(void)
{
int x=1,y=2,z=3;
if(x>y)
{
if(y<z)
{
printf("%d",++z);
}
}
else
{
printf("%d",++y);
}
printf ("%d\n",x++);
return 0;
}
x小于y,执行else里的printf最后再执行printf
int main(void)
{
int x=1,y=2,z=3;
if(x>y)
{
if(y<z)
{
printf("%d",++z);
}
}
else
{
printf("%d",++y);
}
printf ("%d\n",x++);
return 0;
}
x小于y,执行else里的printf最后再执行printf
第5个回答 2014-08-03
编码格式不规范第二个if从句在第一个里面。x++表达式不变x本身自增,所以最后结果是1