其他分享
首页 > 其他分享> > CSAPP阅读随笔——22.6.9

CSAPP阅读随笔——22.6.9

作者:互联网

练习题2-10.指针与加法逆元实现的无需第三变量的两变量交换

整数运算中存在:

a + (-a) = 0,a与-a互为加法逆元

利用该性质可实现如下代码:

void inpace_swap_integer(int * x, int * y)
{
    *y =  (-*x) +   *y;
    *x =    *x  +   *y;
    *y =    *x  + (-*y);
}

布尔运算中存在:

b ^  b = 0,b与b本身互为加法逆元(其中^为异或运算)

同理可实现

void inpace_swap_bool(int * x, int * y)
{
    *y = *x ^ *y;
    *x = *x ^ *y;
    *y = *x ^ *y;
}

标签:CSAPP,int,void,逆元,22.6,swap,inpace,加法,随笔
来源: https://www.cnblogs.com/Willard-Wong/p/16361003.html