不使用第三个变量,交换a,b的值

    int a=10;
    int b=20;
    //1
	a += b;//a=30,b=20
	b = a-b;//a=30,b=10;
	a = a-b;//a=20,b=10
	//2.异或
	a ^= b;
	b ^= a;
	a ^= b;
	printf("%d,%d\n",a,b);

技巧性强的代码,BUG隐藏深,最好还是用tmp

void Swap1(int *p1,int *p2)//不使用第三个变量交换数值,bug   todo
{
     
	*p1 += *p2;
	*p2 = *p1 - *p2;
	*p1 = *p1 - *p2;
}

你可能感兴趣的:(C)