gpt4 book ai didi

c - #define FUNC(x,y) x=^y; y^x;在c中

转载 作者:行者123 更新时间:2023-11-30 18:18:33 29 4
gpt4 key购买 nike

我很难理解先有定义然后有两个异或表达式的含义。这个定义的作用是什么?

我尝试发送 x=8, y=7,结果是 x=15 和 y=8为什么会这样?

这是程序:

#define FUNC(a,b) a^=b; b ^=a;

int main(){
int x=8,y= 7;
FUNC(x,y);
printf("%d %d\n",x, y);
}

最佳答案

其实是一样的

int main(){
int x=8,y= 7;
x^=y; y ^=x;;
printf("%d %d\n",x, y);
}

因为定义只是一个简单的文本替换,即所有带有 a 的位置将被 x 替换,所有带有 b 的位置将被替换将被替换为y

^ 是一个按位异或运算符。

所以首先x = 8 ^ 7 = 15然后y = 7 ^ 15 = 8

这是因为当其中一个位但不是两个都是1时,异或会产生1

x =  8 = 0b00000000000000000000000000001000  // Assuming 32 bit int
y = 7 = 0b00000000000000000000000000000111 // Assuming 32 bit int
x=x^y = 0b00000000000000000000000000001111 = 15

x = 15 = 0b00000000000000000000000000001111 // Assuming 32 bit int
y = 7 = 0b00000000000000000000000000000111 // Assuming 32 bit int
y=y^x = 0b00000000000000000000000000001000 = 8
^^^
Zero because both bits are 1

关于c - #define FUNC(x,y) x=^y; y^x;在c中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019569/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com