64,684
社区成员
发帖
与我相关
我的任务
分享
int main()
{
int *p1 = (int*)-1;
int *p2 = NULL;
if (p1 > p2)
{
cout<<"p1>p2"<<endl;
}
else
cout<<"p1<p2"<<endl;
//不明白下面这两个
cout<<p1-p2<<endl; //-1
cout<<p2-p1<<endl; //0
if ((p1-p2)>0)
{
cout<<"p1-p2>0"<<endl;
}
else
cout<<"p1-p2<0"<<endl;
}
cout<<p1-p2<<endl; //-1
0041648C mov esi,esp
0041648E mov eax,dword ptr [MSVCP80D_NULL_THUNK_DATA (41D434h)]
00416493 push eax
00416494 mov ecx,dword ptr [p1]
00416497 sub ecx,dword ptr [p2]
0041649A sar ecx,2
...
cout<<p2-p1<<endl; //0
004164C2 mov esi,esp
004164C4 mov eax,dword ptr [MSVCP80D_NULL_THUNK_DATA (41D434h)]
004164C9 push eax
004164CA mov ecx,dword ptr [p2]
004164CD sub ecx,dword ptr [p1]
004164D0 sar ecx,2