外部函数中的浮点,双精度数据类型混淆(C)

时间:2018-08-22 14:17:51

标签: c double

下面的代码可以编译:

document.ready

但是,当输入#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.5sum打印两个随机数。 问题一定出在double和float数据类型上,我似乎使用不正确。

1 个答案:

答案 0 :(得分:5)

在您的scanf()中,您使用了用于整数的格式说明符%d。在将整个变量声明为双精度变量时,请改用%lf(浮点数)。我尝试了该代码,并使用正确的说明符,该代码有效。