c++ - 将指针转换为整数时,我应该使用 reinterpret_cast 吗?
问题描述
我的理解是,从指针转换为整数时,我应该使用 reinterpret_cast,因为这让我可以在编译时检查整数变量是否足够大以容纳指针。那是对的吗?
与只是在我没有保证的地方进行投射相反,并且在从 32 位环境移动到 64 位环境时可能最终截断地址?
解决方案
1.reinterpret_cast
意味着重新解释底层的位模式。这意味着 C 中的显式转换,例如:
void *vptr;
int *iptr = (int *)(vptr);
你应该知道 reinterpret_cast 是不安全的,转换的正确性由你自己决定。
如果您需要类型安全的转换,请使用static_cast
,它表示类型之间的隐式转换或类型安全转换。常用于数值类型之间
2.可能会导致截断,使用精确字长int型为宜。即int64_t
通过包括<cstdint>
推荐阅读
- audio - 通过浏览器播放的音频的真实持续时间
- reactjs - 如何使用反应测试库为 Material-ui 中的选项卡编写测试用例
- grafana - Grafana 表向下钻取动态链接
- python-3.x - 重命名和就地问题
- javascript - 将 eventlistner 添加到 SVG 条形图
- excel - Powerpivot 从表 2 的数据范围中检索基值以将其作为列添加到表 1
- python - Python:使用 venv 时,如何包含我在 venv 之外安装的包?
- php - PHP单元测试不兼容PHP8,是否支持向后兼容?
- hadoop - 如何计算hdfs中按日期分组的文件数
- javascript - 从 html 和 javascript 中删除选择元素