【发布时间】:2013-11-28 15:17:42
【问题描述】:
我正在尝试使用类似 uint64_t foo(uint32_t,uint32_t) 这样的接口来实现一个操作、一个函数,所以这是一个简单的实现:
#include <iostream>
#include <cstdint>
uint64_t foo(const uint32_t &a, const uint32_t &b) {
return ((reinterpret_cast<const uint64_t &>(a)) +
(reinterpret_cast<const uint64_t &>(b)));
}
int main() {
uint32_t k1 = ~0;
uint32_t k2 = 1;
std::cout << foo(k1, k2) << "\n";
return (0);
}
现在我的重点是reinterpret_cast 和+ 运算符。
+ 运算符应该没问题,因为它被 2 uint64_t 调用;所以问题是reinterpret_cast?我不明白为什么...
我的猜测是关于a 或b 附近的内存块,所以reinterpret_cast 的结果是原始a 或b 的50%,另外50% 是随机块的记忆。我这就是这个演员阵容的真正运作方式?
我已经尝试了 reinterpret_cast 的多个版本,即使使用指针,也没有运气。
【问题讨论】:
标签: c++ unsigned-integer