【刷点笔试面试题试试水】不使用任何中间变量如何将a、b的值进行交换?

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

问题:

解答:

cpp 复制代码
#include <iostream>
using namespace std;

void swap1(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
}

void swap2(int& a, int& b)
{
	a = a + b;
	b = a - b;
	a = a - b;
}

void swap3(int& a, int& b)
{
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
}

int main()
{
	int a1 = 1, b1 = 2;
	int a2 = 3, b2 = 4;
	int a3 = 5, b3 = 6;
	int a = 2147483647, b = 1;

	swap1(a1, b1);
	swap2(a2, b2);
	swap3(a3, b3);

	printf("after swap. . .\n");
	printf("a1 = %d,b1 = %d\n", a1, b1);
	printf("a2 = %d,b2 = %d\n", a2,b2); 
	printf("a3 = %d,b3 = %d\n", a3, b3); 
	
	swap2(a,b);
	printf("a = %d,b = %d\n", a, b);


	return 0;
}

运行结果:

注意:

  • 方法二可能会溢出,所以方式三是最佳解.

记下来吧...

相关推荐
Cx330❀3 分钟前
【MySQL基础】详解MySQL数据类型:底层原理、越界测试与最佳实践
linux·开发语言·数据库·c++·mysql
fanged3 分钟前
Linux_Driver_Tutorial(1)(TODO)
学习
星恒随风7 分钟前
C++ string 入门(一)
开发语言·c++·笔记·学习
旖-旎8 分钟前
《LeetCode 200 FloodFill 岛屿数量DFS解法》
c++·算法·深度优先·力扣·floodfill
zdr尽职尽责11 分钟前
Unity录像功能
学习·ui·unity·游戏引擎
前进吧-程序员15 分钟前
反转链表完全指南:辅助容器、三指针、头插法
数据结构·c++·链表
我不是懒洋洋17 分钟前
从零实现一个分布式配置中心:服务发现与热更新
c++
省四收割者19 分钟前
从硬件中断到分布式协程:全景解构高并发机制与 C / Golang 的巅峰对决
c++·分布式·嵌入式硬件·golang
Cx330❀23 分钟前
【Linux网络】从零定制应用层协议:黏包问题、全双工缓冲区与 Jsoncpp 序列化深度解析
linux·运维·服务器·开发语言·网络·c++·人工智能
lazy H26 分钟前
IDEA 如何配置 JDK?项目 SDK 报错解决方法
java·ide·后端·学习·intellij-idea