0
点赞
收藏
分享

微信扫一扫

两个整数相加的3种方法

niboac 2022-04-04 阅读 83
c语言

题目:交换两个整形变量的值。如:a=2,b=3;  交换后:a=3,b=2;

1:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a,b,c;
	scanf("a=%d,b=%d", &a, &b);
	c = a;
	a = b;
	b = c;
	printf("a=%d,b=%d", a, b);
	return 0;
}

正常的利用第三个变量交换两个整数的方法,可读性高,效率好。

2:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a, b;
	scanf("a=%d,b=%d", &a, &b);
	a = a + b;
	b = a - b;
	a = a - b;
	printf("a=%d,b=%d", a, b);
	return 0;
}

若是数值过大,容易栈溢出。

3:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a, b;
	scanf("a=%d,b=%d", &a, &b);
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("a=%d,b=%d", a, b);
	return 0;
}

这个方法用到的操作符叫异或,是用于二进制的;比如3的二进制是011,5的二进制是101;如下图所示,只要是相同的位就变成0,不同就是1;用于二进制中。该题利用了 a^a=0;a^0=a的方法所求。

 

举报

相关推荐

0 条评论