给定一个变量 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/