我也是跟着黑马写的C++,但是没有移植代码,一直在win11上用的VScode,但是也报了同样的错误,如图
目的是将16进制的地址,转化为10进制的
问题:因为基于Linux内核的64位系统上指针类型占用8个字节,而int类型占用4个字节,所以会出现loses precision。但亲身遇到的问题并不是在linux而是win,或许编译内核是linux,才疏学浅,尚未理解。
解决:可以先将int* 转成long类型,long类型可以隐式类型转换到int类型。直接修改为long long即可,而单纯long类型是不可以的,依然不理解为什么。
成功解决!大家先记住要这么用吧,如果有大佬知道所以然,不妨评论出来大家一起学习,谢谢!