我不是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有关,但我不知道它是如何发生的。我需要有人帮助我理解。提前致谢!
在printf
中,您应该使用%lf
格式说明符打印一个双精度浮点数(mid
)。
%f
,对于float和double都适用,因为当通过省略号传递时,float会提升为double。 %lf
是无效的。对于scanf
函数,%f
表示float,%lf
表示double,%Lf
表示long double。 - Pete Beckerprintf("%f %i\n", mid, d);
double m_Doubled;
m_Doubled = static_cast(m);
static_cast<double>(m)
而不是旧式的(double) m
。 - Anubis