【发布时间】:2021-05-11 13:49:19
【问题描述】:
void main()
{
printf("%f",12/7.0);
getch();
}
类型转换是否会发生在这段代码中,如果是,那么为什么会发生,如果不是,为什么不会在这段代码中发生,请解释一下?另外我认为这里是双数据类型的 7.0(根据类型转换规则)和整数数据类型的 12 会给出双精度数据类型,但是当我用 %lf 打印时,屏幕上的输出又是浮点数,我不知道不知道怎么纠正我?
【问题讨论】:
-
见Implicit type promotion rules。特别是“通常的算术转换”。您需要了解常量
12和7.0具有与变量一样的类型。 -
对于 printf 参数有这个en.cppreference.com/w/c/language/…,如果您想知道 7.0 是什么类型,请参阅en.cppreference.com/w/c/language/floating_constant
-
要添加到@Lundin 有用的注释,您可以使用文字限定常量:
printf("%f",12.0f/7.0f);例如将常量限定为float(文字后缀f)。 -
是什么让你认为输出是
float?如果是double,你希望看到什么? -
我担心你误解了事情,我似乎是对的。所以请阅读 Jean-Baptiste 的回答,我相信你会标记它。 ;-) 然而,仔细阅读任何一本优秀的 C 书籍都可能向您揭示这一点。
标签: c type-conversion