-1

在 C 中,这个语句是做什么的?

*p1 ^= *p2;

p1并且p2是指向 char 数组的两个不同地址的 char 指针。我知道^运算符是 XOR。

4

4 回答 4

2

如果您以这种方式看待它,它可能应该更容易理解:

char c1 = *p1;
char c2 = *p2;

c1 = c1 ^ c2;

*p1 = c1;

这基本上就是您显示的代码正在做的事情。

当然,这取决于您了解排他性或实际工作方式,并且也了解指针取消引用。

于 2017-10-14T16:27:32.680 回答
1

这个

*p1 ^= *p2;

是具有按位异或运算符的复合赋值运算符,

它是此表达式语句的替换

*p1 = *p1 ^ *p2;
于 2017-10-14T16:36:32.327 回答
0

应用于变量^char,只需将其视为int.

define VALUE 11
char c = VALUE;
int i = VALUE;

因为你可以认为or的在内存中是相同的。ci

于 2017-10-14T16:38:54.263 回答
0

按位异或运算符 (^) 将其第一个操作数的每个位与其第二个操作数的相应位进行比较。如果一位为 0,另一位为 1,则相应的结果位设置为 1。否则,相应的结果位设置为 0。按位异或运算符的两个操作数都必须是整数类型。算术转换中涵盖的常用算术转换应用于操作数。

于 2017-10-14T16:40:18.247 回答