在C语言中按位异或运算用符号“^”表示,对于任意一个位序列a,存在a^a=0,C语言程序可以利用这个特性来实现两个数交换的功能。以下是实现该功能的C语言函数:void xor_swap(int *x,int *y){*y=*x ^ *y; //第一步*x=*x ^ *y;//第二步*y=*x ^ *y; //第三步}假定执行该函数时*x和*y的初始值分别为a和b,即*x=a,*y=b,请说明每一步执行结束后x和y各自指向的内存单元中的内容分别是什么?
A. 第一步执行结束后,x和y指向内存单元内容分别为a和a^b 第二步执行结束后,x和y指向内存单元内容分别为b和a^b 第三步执行结束后,x和y指向内存单元内容分别为b和a
B. 第一步执行结束后,x和y指向内存单元内容分别为a和a^b 第二步执行结束后,x和y指向内存单元内容分别为a和a^b 第三步执行结束后,x和y指向内存单元内容分别为b和a
C. 第一步执行结束后,x和y指向内存单元内容分别为a和a^b 第二步执行结束后,x和y指向内存单元内容分别为a^b和b 第三步执行结束后,x和y指向内存单元内容分别为b和a
D. 第一步执行结束后,x和y指向内存单元内容分别为a和a^b 第二步执行结束后,x和y指向内存单元内容分别为0和^b 第三步执行结束后,x和y指向内存单元内容分别为b和a