黑马程序员技术交流社区

标题: 交换2个数的值,以前学习C的时候 好像没有留意这个问题 [打印本页]

作者: huguozhang    时间: 2015-7-9 16:54
标题: 交换2个数的值,以前学习C的时候 好像没有留意这个问题

除了使用变量temp交换两个数以外,还有以下两种不常用的方法,很给力


void changeTwoNum(int a,int b){

    printf("交换前a=%d  b=%d\n",a,b);

   

    //1,加减法(可能溢出)

    a = b - a ;

    b = b - a;

    a = b + a;

   

    //2,按位异或

    a = a^b;

    b = a^b;

    a = a^b;

    printf("交换后a=%d  b=%d",a,b);

   

}





作者: 慕名黑马生    时间: 2015-7-9 21:16
试了,通过
作者: iOSNC    时间: 2015-7-10 18:27
我记得有3种啊
作者: unnamed    时间: 2015-7-10 21:22
第三种就是采用中间变量的方法。
作者: carshoel    时间: 2015-7-10 22:01
也可以用除法或乘法:a=a*b/a;b=a*b/b;
作者: 小小羊    时间: 2015-7-10 22:16

第一个可以这样
  1. a = a+b;
  2. b = a-b;
  3. a = a-b;
复制代码

作者: 闪电侠    时间: 2015-7-10 22:36
这都是比较高端的方法,但实际开发中一般就用一个临时变量temp来交换




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2