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

请高手指点迷津

biancku 发布于 2010-12-27 19:36, 599 次点击
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    int a=0,b=0,k[2][2]={1,2,3,4},(*p)[2],i,j;
    p=k;
    (*(p))[0]=(*(p))[0]^(*(p+a))[b];                    
    (*(p+a))[b]=(*(p+a))[b]^(*(p))[0];                       
    (*(p))[0]=(*(p))[0]^(*(p+a))[b];
    for(i=0;i<2;i++)
    {
        for(j=0;j<2;j++)
            cout<<setw(4)<<(*(p+i))[j];
        cout<<endl;
    }
    return 0;
}
输出结果为什么是:
只有本站会员才能查看附件,请 登录

而不是:
只有本站会员才能查看附件,请 登录
4 回复
#2
biancku2010-12-27 19:40
上面图片错了
输出结果是
只有本站会员才能查看附件,请 登录

为什么不是这样了
只有本站会员才能查看附件,请 登录
#3
biancku2010-12-27 19:41
实际输出图片是这样
只有本站会员才能查看附件,请 登录

为什么???????????
#4
df198610172010-12-27 20:11
是0  2
  3  4
(*(p))[0]=(*(p))[0]^(*(p+a))[b];  //k[0][0]=0;
#5
hbofffw2011-01-06 05:55
(*(p))[0]=(*(p))[0]^(*(p+a))[b];//P[0][0]异或P[0][0],就是01^01,结果是00.
(*(p+a))[b]=(*(p+a))[b]^(*(p))[0];//从这行开始就成00^00了。。。。不过结果同样是0。
(*(p))[0]=(*(p))[0]^(*(p+a))[b]; //这三行是一样的P[0][0]异或P[0][0]。。。。。。
后面三个数字都没有动,只有1异或1,自然是0了。
1