一道c语言if条件句的问题

#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++);
}追问

那最后运算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;
}

第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,我帮你把格式调整了一下,你应该就明白了

第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
第5个回答  2014-08-03
编码格式不规范第二个if从句在第一个里面。x++表达式不变x本身自增,所以最后结果是1

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网