【发布时间】:2018-08-22 14:17:51
【问题描述】:
下面的代码编译好了:
#include <stdio.h>
double add(double summand1, double summand2)
{
double sum;
sum = summand1+summand2;
return sum;
}
double subtract(double minuend, double subtrahend)
{
double diff;
diff = minuend-subtrahend;
return diff;
}
int main()
{
double a,b,c,d;
printf("Enter Operand 1:\n");
scanf("%d",&a);
printf("Enter Operand 2:\n");
scanf("%d",&b);
// Add
c = add(a,b);
// Subtract
d = subtract(a,b);
printf("Sum: %.3f\n", c);
printf("Difference: %.3f\n", d);
return 0;
}
但是,当输入 5 和 5 时,结果是 0.000(错误)和 0.000(预期)。
当输入一个十进制数(例如2.5)时,会完全跳过第二个提示,并为sum 和difference 打印两个随机数。
问题一定是数据类型 double 和 float,我似乎使用不正确。
【问题讨论】:
-
不同的数据类型对
scanf有不同的格式说明符。你用错了。 -
使用
%lf读取scanf中的浮点类型。 -
@JohnBode
%lf代表double。每个浮点类型都有自己的说明符