注册 登录
编程论坛 C++教室

请教 ^= 的问题

kspliusa 发布于 2010-04-24 20:54, 673 次点击
m_d[] 是一个int型的数组,i, j 是任意两个下标 且i != j ,请问下面的操作会起到什么作用?m_d[]中的数值有何变化?

    m_d[i] ^= m_d[j];
    m_d[j] ^= m_d[i];
    m_d[i] ^= m_d[j];
7 回复
#2
ltyjyufo2010-04-24 21:25
  “ ^  ”是按位异或,结果楼主自己算算就知道了,运算规则是:按位运算,相同位0,不同位1

[ 本帖最后由 ltyjyufo 于 2010-4-24 21:28 编辑 ]
#3
哥是传说2010-04-24 21:33
这是交换两个数的值
楼主题中交换了m_d[i]和m_d[j]的值
#4
jmjy2010-04-24 22:53
交换两数的值 。。。
#5
cnfarer2010-04-25 11:08
这就是用异或操作在不增加内存(使用变量存储)情况下交换两个变量的值。
#6
songqq5202010-04-25 15:23
同意5楼的看法
#7
南国利剑2010-04-25 16:21
五楼说的不错.至于是什么结果,LZ自己试试就知道了
#8
apull2010-04-25 16:42
互换变量的值。
类似于

a=a+b;
b=a-b;
a=a-b;
1