两个变量交换数据的方式

两个变量交换数据的方式

int a = 4;

int b = 7;

如何交换 a 与 b 的值 使得a = 7;b = 4

1、三杯水方法(通用方法,比较常用)

首先定义一个同类型的变量

然后将 a 的值赋给 c;b 的值赋给 a;c 的值赋给 b

#include <stdio.h>

int main(int argc, const char* argv[])
{
    int a = 4;
    int b = 7;
    int c = 0;
    printf(" a = %d;b = %d\n", a, b);
    c = a;
    a = b;
    b = c;
    printf(" a = %d;b = %d\n", a, b);

    return 0;
}

2、三次异或(比较简便,但是不适合字符串与结构体类型数据交换)

a 与 b 异或赋值给 a;

a 与 b 异或赋值给 b;

a 与 b 异或赋值给 a;

#include <stdio.h>

int main(int argc, const char* argv[])
{
    int a = 4;
    int b = 7;
    printf(" a = %d;b = %d\n", a, b);
    a = a^b;
    b = a^b;
    a = a^b;
    printf(" a = %d;b = %d\n", a, b);

    return 0;
}

3、加减法

a 加 b 的值赋给 a;

a 减 b 的值赋给 b;

a 减 b 的值赋给 a;

#include <stdio.h>

int main(int argc, const char* argv[])
{
    int a = 4;
    int b = 7;
    printf(" a = %d;b = %d\n", a, b);
    a = a + b;
    b = a - b;
    a = a - b;
    printf(" a = %d;b = %d\n", a, b);

    return 0;
}

注意:不要越界,a+b的值有可能超出类型的最大数据

例如:有符号char类型存储范围为[-128,127],当使用char类型定义变量时,如果a + b的值大于127,就会发生错误。

#include <stdio.h>

int main(int argc, const char* argv[])
{
    char a = 122;
    char b = 155;
    printf(" a = %d;b = %d\n", a, b);// a = 122;b = -101
    a = a + b;
    b = a - b;
    a = a - b;
    printf(" a = %d;b = %d\n", a, b);// a = -101;b = 122

    return 0;
}

例子

使用C实现两个变量交换值

int a = 10;

int b = 20;

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int a = 10;
	int b = 20;

	/*
	//三杯水交换  常规的用法
	int temp = 0;
	temp = a;
	a = b;
	b = temp;
	*/

	/*
	//不使用第三个变量 这种方法在数据比较大时可能会出现溢出的问题
	a = a+b;//30 20
	b = a-b;//30 10
	a = a-b;//20 10
	*/

	//不使用第三个变量
	/*
	a = a^b;
	b = a^b;
	a = a^b;
	*/

	printf("a = %d   b = %d\n", a, b);
	return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值