a865386512 2014-12-22 14:56 采纳率: 28.6%
浏览 2992
已采纳

C语言中两个变量的值互换问题

两个变量的值互换为什么不能直接用 a=b;b=a;来实现。

  • 写回答

6条回答 默认 最新

  • Happy_柒 2014-12-25 07:14
    关注

    如gcwlwl7所说的
    a=1 ,b=2 要变成a=2 b=1的话
    用所列举的两个等式为
    先a=b=2,此时a已经变成2了,
    再b=a=2,b仍然等于2(a在上面已经变成2了。所以b=a即是b=2)

    不过有种方法:
    a=1;
    b=2;
    a=a+b=3; \(1+2)
    b=a-b=1; \(3-2)
    a=a-b=2; \(3-1)

    即最后就得到 a=2;b=1啦
    这个是不要用到中间变量的方法

    希望有用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • wuliaoxiari 2014-12-22 23:05
    关注

    注意值会被覆盖,所以添加一个中间变量把其中一个值先储存起来!
    a=1,b=2,c=0;(中间变量)
    c=a;a=b;b=c;

    评论
  • 柔软的胖纸 2014-12-22 15:12
    关注

    就像gcwlwl7说的,b将值赋予a后,执行b=a,相当于b的值木有变化。

    评论
  • zichuanxiu_csdn 2014-12-22 15:20
    关注

    执行a=b后,a中的值就被b中的值取代了,a原来的值就消失了。
    再执行b=a时,b中的值被a中的值取代了,但此时a中的值已经不是最初的值了,而是上次执行a=b后b的值了。
    因此无法实现两个值的互换。
    可以参考下列代码:
    t=a;a=b;b=t;

    评论
  • 拥抱开源 2014-12-22 16:11
    关注

    楼主 这是基础的东西
    相当于找一个公共的容器

    评论
  • 快乐鹦鹉 2014-12-23 00:05
    关注

    a=b是,a的值就被修改掉了,再b=a,已经没有意义了。

    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 jsp,如何使用户名输出为中文(语言-javascript)
  • ¥15 PowerBI中如何做到按数值向下取数
  • ¥15 设计quartus maxⅡ :Verilog-FPGA(0
  • ¥15 windows server 2022 datacenter安全策略配置 没有权限问题
  • ¥20 寻找dspace有偿技术支持
  • ¥30 深度学习的模型融合问题
  • ¥20 数电实验Verilog编程
  • ¥15 机器人MATLAB仿真示教占内存过大
  • ¥15 JSR233已经使用但是仍无法将csv数据放到一个list里显示出来,如何解决?
  • ¥15 I350 Gigabit Network