我是C编程新手,但在Java方面还不错,我的问题是我们何时使用%d和%f?在什么情况下?例如,根据下面给出的代码块,如果我被要求取(int)a *(float)y,我可以将它作为%d或%f吗?
#include <stdio.h>
int main()
{
int a = 2;
float y= 1.5;
printf("%d \n", a*y); //do I take this?
printf("%f", a*y); //do I take this?
return 0;
}
输出:
745417384 3.000000
对于printf
,%d
期望其相应的参数具有类型int
,其中%f
期望它具有float
或double
类型。
涉及和int
和float
的算术表达式的结果将是float
,所以在这种情况下你需要使用%f
。
'%d','%i':将整数打印为带符号的十进制数。有关详细信息,请参阅整数转换。 '%d'和'%i'是输出的同义词,但与scanf一起用于输入时有所不同(请参阅输入转换表)。
'%f':以正常(定点)表示法打印浮点数。有关详细信息,请参阅浮点转换。
其他转换也是可能的
在这种情况下,您必须使用%f,否则您将在代码中看到一个奇怪的答案
对于任何语言,规则都是明确的:当您有一个涉及浮点数的操作时,结果总是需要被视为浮点数。所以你必须使用%f