C - 双结果返回0

时间:2016-01-13 00:45:59

标签: c

#include <stdio.h>

int main(int argc, const char * argv[]) {

    int a = 10;
    int b = 20;
    double result = a / b;
    printf("%d divided by %d makes %f\n", a, b, result);

    return 0;
}

期待%f将返回0.500000,我运行了代码,结果证明是0.000000。

是否有result变量返回零值的原因?

2 个答案:

答案 0 :(得分:10)

因为abint,所以它正在执行整数分割,请尝试使用

double result = (float) a / (float) b;

答案 1 :(得分:2)

您正在划分两个整数,这将提供整数结果。在C中,这意味着它将简单地丢弃小数部分,留下0。

您可以按如下方式投射一个或两个操作数(a或b),它应该清除:

double result = (float) a / b;