我使用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 . . .
如果有人帮助我会更好,谢谢:)
答案 0 :(得分:1)
执行C = (4*B*A*A);
时,这并不意味着C
将总是包含该表达式评估的内容。这意味着您正在根据当时表达式的值修改C
。
因此,在此点之后更改A
对C
的值没有影响。由于A
未初始化,因此会产生 undefined behavior ,这意味着结果不一定是可预测的。
您需要先根据A
和C
的当前值读入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未使用未初始化。”