windows7 64bit VS2010

UIntPtr up = new UIntPtr();
up = (UIntPtr)uint.MaxValue; // 通る
up = (UIntPtr)ulong.MaxValue; // x64向けビルドは通る

IntPtr p = new IntPtr();
p = (IntPtr)uint.MaxValue; // x64向けビルドは通る
//p = (IntPtr)ulong.MaxValue; // コンパイルエラー

>>459見るとULONG_PTRは32/64bit符号なし整数だから
やっぱり値によってはオーバーフローするように思えるんだけど…
何か勘違いしてたら指摘お願いします