dev c++警告类型不匹配问题

代码如下:
#include
int main(void) {

long x = 0x62fe1c;
long *p = (long*)x;

printf("%x",p);
return 0;

}

然后出现了如下警告:
4 12 D:\dev-c++\dev-c++文档\实验田2\未命名2.c [Warning] cast to pointer from integer of different size [-Wint-to-pointer-cast]

请问我的代码符合C语言的标准吗?怎么解决这个警告

printf("%x",(unsigned int)(long)p);