验证下面的问题:
int *a=new int(10);
int *b=new int(20);
cout<<"a="<<hex<<a<<endl;
cout<<"b="<<hex<<b<<endl;
a=(int*)(b-a);
cout<<"a="<<hex<<a<<endl;
b=(int*)(b-(long)a);
cout<<"b="<<hex<<b<<endl;
a=(int*)(b+(long)a);
cout<<"a="<<hex<<a<<endl;
cout<<*a<<endl;
cout<<*b<<endl;
输出:
a=0x1a31950
b=0x1a31970
a=0x8
b=0x1a31950
a=0x1a31970
14
a
可见图片中的说法在gcc 64位linux下并不正确,两指针相减获得的是两个指针之间元素个数,两指针相加没有意义,所以转换为long型进行计算