5.高频面试题-如何不使用中间变量交换两个变量值?

#include <stdio.h>

// 交换两个数据(测试暂无问题)
void swap(int *a,int *b)
{
    if(a != b) // 避免传输a与b地址相同
    {
        *a = *a ^ *b;
        *b = *a ^ *b;
        *a = *a ^ *b;
    }
}

int main(int argc, const char *argv[])
{
	int a = 10;
	int b = 45;
	swap(&a,&b);
	printf("a = %d, b = %d\n", a, b);

	return 0;
}

mark: 经过大牛测试,其实采取中间变量的交换方式执行效率更高一些!

发布了10 篇原创文章 · 获赞 0 · 访问量 531

猜你喜欢

转载自blog.csdn.net/TurboTab/article/details/104607092