| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 999 人关注过本帖
标题:为什么这个就叫做互换
只看楼主 加入收藏
夜长风
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2013-6-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
为什么这个就叫做互换
#include<stdio.h>
int main(void)
{
    int a,b,t;
    a = 3,b = 4;
    if(a < b)
    {
        t = a;//1
        a = b;//2
        b = t;//3
    }
    printf("%d,%d",a,b);
    return 0;
}
我的疑问是为什么这个就叫做互换,我已经看懂1,2,3过程应该就是a,b互换过程,不过纠结于为什么这样就叫做互换,但是不过这纠结又好比纠结1+1=2的问题,有人解释下为什么不,感觉像是钻牛角尖了。
搜索更多相关主题的帖子: return 
2013-06-19 13:58
夜长风
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2013-6-12
收藏
得分:0 
去游个泳,希望有能看的懂的回复,哎境界太低,看到十行以上的代码就头晕。
2013-06-19 13:58
yss0729
Rank: 3Rank: 3
来 自:江西 九江
等 级:论坛游侠
帖 子:43
专家分:197
注 册:2013-6-8
收藏
得分:4 
举个例子,如果我想互换两个变量的值
int a=1,b=2;
a=b;// step 1
b=a;// step2
// 分别输出 a和b 结果为 2 2
和预料的不太一样,代码第一眼看上去也似乎没什么问题,但是一步步分析,发现还是不对的,计算机中的 “=”是赋值概念,并且程序是由上至下运行,我们可以分析一下
第一步 把b的值赋给了a 那么a现在是2
第二部 把a的值再赋给b 所以 b也是2了
这样显然不对

要实现变量间的交换,必须要用到中间变量也称 临时变量
2013-06-19 14:48
ceoooec
Rank: 2
等 级:论坛游民
威 望:1
帖 子:26
专家分:61
注 册:2013-6-11
收藏
得分:4 
互换的原理就是将其中一个数a赋值给中间变量,也叫临时变量。再将另一个数b赋值给a,再将临时变量的值给b.你可以类比交换两个瓶子里的液体,你会发现必须要有第三个瓶子,才能完成。
2013-06-19 15:21
bccn新
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:57
专家分:144
注 册:2013-5-10
收藏
得分:4 
以下是引用夜长风在2013-6-19 13:58:10的发言:

我已经看懂1,2,3过程应该就是a,b互换过程,不过纠结于为什么这样就叫做互换
那你认为什么叫互换?
2013-06-19 15:27
菜鸟一支
Rank: 6Rank: 6
来 自:何美杭
等 级:侠之大者
威 望:1
帖 子:121
专家分:456
注 册:2012-10-10
收藏
得分:4 
这样子说吧,你叫张三,我叫李四,好,我们互换名字,你就叫李四,我就叫张三了。中间不涉及其他任何角色。
但程序中你定义的变量不像我们人一样具有记忆功能(静态变量不谈),就好比你和我都失忆了。所以这个时候就需要一个人来充当t的角色,告诉我你今后不叫李四叫张三了,同理也告诉你。
因此,我觉得你在看待这个问题的时候不要看过程,只看结果(即A,B的值互换了)。
希望对你有所帮助

小弟何美杭,所发表的都仅代表个人观点,欢迎批评指正。
2013-06-19 16:07
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:2 
回复 3楼 yss0729
可以不用中间变量的,比如:
a = a + b;
b = a - b;
a = a - b;


莫问前尘有愧,但求今生无悔
2013-06-19 16:42
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:1 
回复 7楼 pycansi
你这种方式  a+b超出a和b的定义范围 就会出问题了
收到的鲜花
  • azzbcc2013-06-19 19:01 送鲜花  20朵   附言:善于发现问题,但不要妄下结论,亲自实践下 ...
2013-06-19 16:53
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:1 
为什么叫交换?什么叫交换?满足要求即可称之为交换。这里应该叫值的交换


莫问前尘有愧,但求今生无悔
2013-06-19 16:56
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
回复 8楼 wyw19880809
多谢提醒


莫问前尘有愧,但求今生无悔
2013-06-19 17:00
快速回复:为什么这个就叫做互换
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019077 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved