为什么答案结果是0而不是0.009?

时间:2016-02-07 13:18:08

标签: c operators

#include <stdio.h>
#define KILOMETRE 9

main()
{
    float metre = KILOMETRE / 1000;
    printf("%f\n", metre);
}

答案应为0.009,因为9/1000 = 0.009

但在执行程序后,输出结果为0.00。

请帮忙。 :d

3 个答案:

答案 0 :(得分:7)

在此表达式中

KILO/1000

两个操作数都是整数。因此,整数值的操作结果等于0。

您可以改为编写

KILO/1000.0f

在这种情况下,编译器将处理浮点数。

考虑到根据C标准函数main,没有参数应声明为

int main( void )

答案 1 :(得分:3)

这是因为您正在执行整数除法。如果两个操作数都是int类型,则结果也是int。在这种情况下,当你分割两个整数时,结果将被截断 - 也就是说,小数部分将被抛出。您需要将代码更改为

KILO / 1000.

注意尾随小数点。这告诉编译器1000是浮点数,而不是整数。

答案 2 :(得分:2)

当对两个整数执行算术运算(即,两个操作数是整数)时,结果将是整数。因此,为了获得浮点输出,请将代码重写为float metre = (float) KILOMETRE / 1000;