#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;都会执行