为什么答案是 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;
#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;