C语言实现两个数交换的最优方案

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言实现两个数交换的最优方案相关的知识,希望对你有一定的参考价值。

C语言实现两个数交换的最优方案

  • 实现方式一:通过指针变量,异或处理
#include <stdio.h>
void swap(int *x, int *y)
{
  int temp = (*x) ^ (*y); //设a为临时变量,存储异或值
  *y = temp ^ (*y);       //相当于b=a
  *x = temp ^ (*x);       //相当于a=b
}

void main()
{
  int a = 33;
  int b = 66;
  int *pa = &a;
  int *pb = &b;
  swap(pa, pb);
  printf("a= %d ,b = %d \\n", a, b);
}

  • 实现方式二: 直接异或运算
#include <stdio.h>
void main()
{
  int a = 33;
  int b = 66;
  a = a ^ b ^ a; //也可以不设置临时变量,因为异或值没有发生变化
  b = a ^ b ^ b;
  printf("a= %d ,b = %d \\n", a, b);
}

  • 实现方式三:通过直接变量,交换数值
#include <stdio.h>
void swap(int *x, int *y)
{
  int temp = *x; //设中间临时变量
  *x = *y;       //相当于b=a
  *y = temp;     //相当于a=b
}

void main()
{
  int a = 33;
  int b = 66;
  swap(&a, &b);
  printf("a= %d ,b = %d \\n", a, b);
}

以上是关于C语言实现两个数交换的最优方案的主要内容,如果未能解决你的问题,请参考以下文章

实现一个函数来交换两个整数的内容(C语言代码练习)

C语言 两个[不定参函数]之间如何进行 [参数传递]

在C语言中,一个函数一般由两个部分组成,它们是——和——

2.采用函数调用的方式,实现两个数的值进行交换:

FFT的最优算法是啥?以及其代码(C语言),谢谢!

两个数交换问题