求解答,关于c语言的问题。这个程序为什么输出的是50 3?

#include<stdio.h>
main()
{
int a=4,b=3,c=5,t=0;
if(a<b) t=a;a=b;b=t;
if(a<c) t=a;a=c;c=t;
printf("%d%d %d \n",a,b,c);
}

如果有多条语句需要满足if判断成立才执行的话,要用{}括起来。你的两个if后面的三条赋值都没有括起来,因此if默认只控制下面的第一条语句。那么分析一下就知道了,第一次if(a<b)不成立,不执行t=a;但是会执行a=b;b=t;所以a==3,b==0,第二次if(a<c)成立,那么执行完下面三条语句之后,a==5,b==0,c==3.
希望对你有所帮助
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-22
应为 printf里面 前两个%d之间没有空格 所以一起输出50 后来一个%d有了空格 所以输出50 3追问

不是,这个我知道,我的疑问是为什么b=0,c=3。我的理解是,这个程序执行的是第二个if语句,只是a和c交换了数值

追答

if后面没加大括号 if后面只有一句话
就是 if(a<b)if(a<b) t=a;a=b;b=t;

不管if成不成立 a=b;b=t;都会执行

相关了解……

你可能感兴趣的内容

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