C ++ float scanf输入数

时间:2016-04-15 12:19:35

标签: c

我使用Bloodshed DevC ++编译此代码。 但是我遇到了scanf float number的问题。 而且我不想得到十进制类型,但结果必须是float类型, 但结果总是0.000000。

这是代码:

    #include <stdio.h>

main()

{
    float A, B, C;
    B = 3.14;

    C = (4*B*A*A);

    printf (" Enter value of A : "); scanf("%f", &A);
    printf ("\n");
    printf (" So, the result is : %f", C);
    printf ("\n");
}

结果是: Float.jpg

Enter value of A : 22.45

 So, the result is : 0.000000

--------------------------------
Process exited after 7.235 seconds with return value 0
Press any key to continue . . .

如果有人帮助我会更好,谢谢:)

2 个答案:

答案 0 :(得分:1)

执行C = (4*B*A*A);时,这并不意味着C总是包含该表达式评估的内容。这意味着您正在根据当时表达式的值修改C

因此,在此点之后更改AC的值没有影响。由于A未初始化,因此会产生 undefined behavior ,这意味着结果不一定是可预测的。

您需要先根据AC的当前值读入A然后修改B的值:

printf (" Enter value of A : "); scanf("%f", &A);
C = (4*B*A*A);
printf ("\n");
printf (" So, the result is : %f", C);
printf ("\n");

要执行原始代码的操作,您需要定义一个函数,以便在调用它时计算C的值。

#include <stdio.h>

int C(int A, int B)
{
    return 4*B*A*A;
}

int main()
{
    float A, B;
    B = 3.14;

    printf (" Enter value of A : "); scanf("%f", &A);
    printf ("\n");
    printf (" So, the result is : %f", C(A,B));
    printf ("\n");
}

答案 1 :(得分:0)

在您要求输入之前,您正在计算“结果”:

float A, B, C;
B = 3.14;

C = (4*B*A*A);   //  What value has A here? Probably 0 !!

printf (" Enter value of A : "); scanf("%f", &A);  // This has no influence
                                                   // whatsoever on the 
                                                   // value of C
printf ("\n");
printf (" So, the result is : %f", C);
printf ("\n");

我不确定C(问题是之前标记过C ++),但我猜A被初始化为0,因此结果确实是0

PS:一种类型的编译器会发出警告,例如“警告:变量A未使用未初始化。”