首页 > 解决方案 > 将指针转换为整数时,我应该使用 reinterpret_cast 吗?

问题描述

我的理解是,从指针转换为整数时,我应该使用 reinterpret_cast,因为这让我可以在编译时检查整数变量是否足够大以容纳指针。那是对的吗?

与只是在我没有保证的地方进行投射相反,并且在从 32 位环境移动到 64 位环境时可能最终截断地址?

标签: c++pointersreinterpret-cast

解决方案


1.reinterpret_cast意味着重新解释底层的位模式。这意味着 C 中的显式转换,例如:

void *vptr; 
int *iptr = (int *)(vptr);

你应该知道 reinterpret_cast 是不安全的,转换的正确性由你自己决定。

如果您需要类型安全的转换,请使用static_cast,它表示类型之间的隐式转换或类型安全转换。常用于数值类型之间

2.可能会导致截断,使用精确字长int型为宜。即int64_t通过包括<cstdint>


推荐阅读