首页 > 解决方案 > 外部函数中的浮点数、双精度数据类型混淆 (C)

问题描述

下面的代码编译正常:

#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;
}

但是,当输入时55结果是0.000(错误的)和0.000(预期的)。输入十进制数(例如2.5)时,会完全跳过第二个提示,并为sum和打印两个随机数difference。问题一定出在数据类型 double 和 float 上,我似乎使用不正确。

标签: cdouble

解决方案


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


推荐阅读