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

Why does the answer turn out to be 0 instead of 0.009?

#include <stdio.h>
#define KILOMETRE 9

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

答案应该是 0.009 因为 9/1000=0.009

但是执行程序后输出结果是0.00。

请帮忙。 :D

在这个表达式中

KILO/1000

两个操作数都是整数。所以整数值的 / 运算结果等于 0.

你可以改写

KILO/1000.0f

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

考虑到根据 C 标准,不带参数的函数 main 应声明为

int main( void )

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

KILO / 1000.

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

对两个整数进行算术运算时(即两个操作数都是整数),结果都是整数。所以为了得到浮点数输出,将代码重写为float metre = (float) KILOMETRE / 1000;