关于64位Linux下地址转换为整型时会损失精度的问题

编译过程中提示错误:cast from 'void*' to ''intptr_t' {aka 'short int'} loses precision [-fpermissive]

有点奇怪,不是使用了intptr_t 以后使用的的就是与系统相同的位数嘛?为什么还是丢失精度了

位数是编译器决定的不是操作系统决定的。你的 'intptr_t' 在你的编译器中当作了 short int *

地址与整型数据之间的转换最好使用unsigned long,这个类型在32位或64位的程序中都适应。看错误提示,这个intptr_t的定义是short int类型。