我不是C ++开发人员,但今天我找到了一个C ++代码并尝试理解它。所以我已经堆积在这段代码上了:
int m = 2, n = 3, i = 1;
double mid = (double)m / n * i;
int d = (int)mid + 1;
printf("%d %d\n", mid, d);
将要打印到控制台的结果是:1431655765 1071994197.这似乎与将变量m转换为double有关,但我不知道它是如何发生的。我需要有人来帮助我理解它。提前谢谢!
答案 0 :(得分:4)
您应该在mid
中使用%lf
格式说明符打印双精度(printf
)。
答案 1 :(得分:1)
将printf更改为
printf("%f %i\n", mid, d);
实际上会打印您所期望的内容,即0.666667 1
答案 2 :(得分:0)
一种更简单的解决方法是
double m_Doubled;
m_Doubled = static_cast(m);