C语言之数值交换

关于数值交换的几种方法:

一、引用中间变量

1、直接利用中间变量

#include <stdio.h>

int main(){

int a = 10;

int b = 20;

int c;

//交换前

printf(" Before switch:a = %d,b = %d\n",a,b);

//交换

c = a;

a = b;

b = c;

//交换后

printf("After switch:a = %d,b = %d\n",a,b);

return 0;

}


2、通过指针实现

#include <stdio.h>

void change(int *,int *);

int main(){

int a = 10;

int b = 20;

//交换前

printf(" Before switch:a = %d,b = %d\n",a,b);

//交换

change(&a,&b);

//交换后

printf("After switch:a = %d,b = %d\n",a,b);

return 0;

}

void change( int * p1 ,int * p2){

int c = *p1;

*p1 = *p2;

*p2 = c;

}





二、不引用中间变量

1、利用加法

      //此种方法可能会溢出;

#include <stdio.h>

int main(){

int a = 10;

int b = 20;

//交换前

printf(" Before switch:a = %d,b = %d\n",a,b);

//交换

a = a + b;

b = a - b;

a = a - b;

//交换后

printf("After switch:a = %d,b = %d\n",a,b);

return 0;

}



2、通过运算符^

#include <stdio.h>

int main(){

int a = 10;

int b = 20;

//交换前

printf(" Before switch:a = %d,b = %d\n",a,b);

//交换

a = a^b;

b = a^b;

a = a^b;

//交换后

printf("After switch:a = %d,b = %d\n",a,b);

return 0;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值