大一C++题目,应该是位运算的问题

题目描述

设计重载函数,使用按位异或(^)运算,实现快速交换两个整型变量和浮点型变量的值。

输入
四个数(空格隔开,前两个整型,后两个double)

输出
四个数原来的顺序(a b c d)

前两个,后两个swap后的顺序(b a d c)

KeyWord(s) that Must be Used
^
样例输入
1 2 3.1 4.5

样例输出
1 2 3.1 4.5
2 1 4.5 3.1

void swap(double&a,double&b)
{

int*ap, *bp;
    ap = (int*)(&a);
    bp = (int*)(&b);
    cout << "a=" << a << "\tb=" << b << endl;
    *ap = (*ap) ^ (*bp);  *bp = (*ap) ^ (*bp);  *ap = (*ap) ^ (*bp);
    ap++; bp++;
    *ap = (*ap) ^ (*bp);  *bp = (*ap) ^ (*bp);  *ap = (*ap) ^ (*bp);
    cout << "a=" << a << "\tb=" << b << endl;

}课本上有这道例题

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