【发布时间】:2017-12-24 10:14:28
【问题描述】:
以下代码有效:
int main(void)
{
float f = get_float();
int i = round(f*100);
printf("%i\n", i);
}
但是,如果这样编码会产生错误:
printf("%i\n", round(1.21*100));
输出显示round(1.21*100) 是float。那么,为什么
int i = round(f*100);
还好吗?
【问题讨论】:
-
当
float值分配给int值时,会发生内部转换。round()给出一个双精度值,所以如果没有执行转换,它的值仍然是双精度值。在这种指定的情况下printf("%i\n", round(1.21*100));不执行转换,因此需要 '%f' 说明符来打印浮点值。
标签: c type-conversion