面试真题

C++ · 中等 · 百度

double 转 int64 用 `reinterpret_cast` 和 `static_cast` 区别

中等 C++ 🎤 百度
参考答案
结论:static_cast做数值类型转换(截断小数),reinterpret_cast仅重新解释比特模式不做数值转换。区别:1.static_cast<int64_t>(d)将double值3.14转为int64_t的3,是语义上的类型转换,安全;2.reinterpret_cast<int64_t&>(d)把double的64位IEEE754二进制直接当作int64_t内存解释,结果是一个大整数(如0x40091EB851EB851F),无数学意义且易错;3.原理:static_cast调用转换逻辑,reinterpret_cast仅告诉编译器类型重解释,不产生任何指令。示例:double d=1.0; int64_t a=static_cast<int64_t>(d); //1; int64_t b=reinterpret_cast<int64_t&>(d); //0x3FF0000000000000。
题目整理自公开面经,答案由校招宝自研生成,仅供参考