什么* p1 ^ = * p2;在c

时间:2017-10-14 16:22:38

标签: c compound-assignment

在C中,这句话的作用是什么?

*p1 ^= *p2;

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

4 个答案:

答案 0 :(得分:2)

如果您这样看,应该更容易理解:

A

这基本上就是你所展示的代码所做的事情。

这当然依赖于你知道exclusive or实际上是如何工作的,并且也知道指针解除引用。

答案 1 :(得分:1)

*p1 ^= *p2;

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

它是此表达式语句的替代

*p1 = *p1 ^ *p2;

答案 2 :(得分:0)

^变量上应用char时,只需将其视为int

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

因为您可以认为ci在内存中相同。

答案 3 :(得分:0)

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