c语言解释

来源:百度知道 编辑:UC知道 时间:2024/05/10 09:16:25
用户输入两个数求两个数之间的所有数的和(输入的数,可能存在,前面的数大于后面的数)
main()
{
int i,a,sum=0,b,t;
scanf("%d%d",&a,&b);
if(a>b)
{
t=a;
a=b;
b=t;
}
for(i=a;i<=b;i++)
{
sum=sum+i;
}
printf("%d",sum);
getch();
}
高手解释一下 if后面的互换过程,也就是t=a;a=b;b=t,谢谢

我们用具体数字来举例说明比较容易接受。
比如a=4,b=3.
一般人的想法是直接交换
a=b,b=a
我们来细看
a=b=3,没有问题
b=a。可是此时a已经=3.所以b=a=3.

这说明需要 一个中间量要保存。

所以t=a=4.
a=b=3
b=t=4
最终a=3,b=4.换过来

在所有的交换中都是需要一个swap中间量的

那是变量互换
t为临时变量
t=a;是把a的值赋给t,
a=b;是把b的值赋给a,这样a的值就变成了b 的值
然后
b=t;因为t保存的是a的值,所以b的值就变成了a的值
t本身只起临时保存变量值的作用
如果不用t
a=b时,a的值就为b的值
然后b=a,这样还是b的值
所以交换元素时都会用一个临时变量

if(a>b) //如果a>b两者互换,也就下面程序
{
t=a; //t是中间变量.让比较大的赋值给t
a=b; //再把比较小的数替代比较大的数
b=t; //刚刚把比较大的数赋值给了t,再把t里的值(比较大的数)替代比较的数
}

明白?其实t就是一个中转量

没分不看