何时在C中使用%d和%f?

问题描述 投票:1回答:4

我是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

c floating-point printf double
4个回答
4
投票

对于printf%d期望其相应的参数具有类型int,其中%f期望它具有floatdouble类型。

涉及和intfloat的算术表达式的结果将是float,所以在这种情况下你需要使用%f


2
投票

'%d','%i':将整数打印为带符号的十进制数。有关详细信息,请参阅整数转换。 '%d'和'%i'是输出的同义词,但与scanf一起用于输入时有所不同(请参阅输入转换表)。

'%f':以正常(定点)表示法打印浮点数。有关详细信息,请参阅浮点转换。

来源:https://www.gnu.org/software/libc/manual/html_node/Table-of-Output-Conversions.html#Table-of-Output-Conversions

其他转换也是可能的


1
投票

在这种情况下,您必须使用%f,否则您将在代码中看到一个奇怪的答案


0
投票

对于任何语言,规则都是明确的:当您有一个涉及浮点数的操作时,结果总是需要被视为浮点数。所以你必须使用%f

© www.soinside.com 2019 - 2024. All rights reserved.