首页 > 试题广场 >

对于任一位向量a,有a^a =0。应用这一属性,考虑下面的程

[问答题]

对于任一位向量a,有a^a =0。应用这一属性,考虑下面的程序:

void inplace_swap(int *x,int *y){
*y=*x^*y;  /*Step1*/
*y=*x^*y;  /*Step2*/
*y=*x^*y;  /*Step3*/
}

正如程序名字所暗示的那样,我们认为这个过程的效果是交换指针变量x和y所指向储位置处值注意,与通常的交换两个数值的技术不一样,当移动一个值 时,我们不需要第三个位置来临时存储另一个值。这种交换方式并没有性能上的优 势,它仅仅是一个智力游戏。

以指针x和y指向的位置存储的值分别是a和b作为开始,填写下表,给出在程序的 每一步之后,存储在这两个位置中的值。利用^的属性证明达到了所希望的效果。回想一下,每个元素就是它自身的加法逆元(a^a=0)。

步骤

*x

*y

初始

a

b

第i步

 

 

第2步

 

 

第3步

 

 

 

题目应该错了,第二步应该是*x=*x*^y
发表于 2021-07-21 14:54:59 回复(0)