c++ - 从 'size_t' 转换为 'const double' ,可能丢失数据

标签 c++ static-cast

给定一个变量 size_t idx , 像 double value = idx; 这样的赋值在 64 位下编译时产生以下警告:

'initializing': conversion from 'size_t' to 'double', possible loss of data

这似乎与一个 size_t 的事实有关。在 64 位下编译时 value 占用 8 个字节。但是,分配 double value = static_cast<double>(idx)不产生任何警告。有人可以向我解释为什么前一个作业不起作用而后者起作用吗?

提前致谢!

最佳答案

当你做的时候

double value = idx;

编译器看着它然后说:“嘿,idx 可能无法放入 value,让我们告诉程序员以防出错。” .这就是您收到警告的原因。

当你做的时候

double value = static_cast<double>(idx)

编译器看着它然后说:“哦,程序员在这里显式转换,这一定是他们想要的。”。这意味着它不会出现警告。

关于c++ - 从 'size_t' 转换为 'const double' ,可能丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60098031/

相关文章:

C++:从基类型指针确定派生类型

c++ - CMFCButton 编译错误

c++ - 整数在 Excel 2010 与 Excel 2003 中的表示(C++ 插件)

c++ - 几乎 pod 数据的 reinterpret_cast(布局兼容性是否足够)

c++ - 为什么会编译,是否有任何编译器开关可以使编译器将其报告为错误或警告?

c++ - 在C++中融化POC

c++ - 为什么我可以使用 CRTP 将基类的 this 指针转换为指向子类的指针?

c++ - 将父对象静态转换为子 C++

c++ - 将 time_t 转换为 int

c++ - 转换需要reinterpret_cast、C 风格转换或函数风格转换