gpt4 book ai didi

c - 时间 = C 中的距离与速度

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:35 25 4
gpt4 key购买 nike

我试图找出在 C 中以恒定速度行进输入的距离所花费的时间。我的代码具有功能但输出打印为 0?知道出了什么问题吗?

#include <stdio.h>
#include <stdlib.h>
int main() {
int distance, speed = 80;
float time;

// This is how to read an int value
printf("Please enter a distance in kilometers to be covered at 80KPH. \n");
scanf("%d", & distance);
printf("You typed: %d\n", distance);
printf("\n");
time = distance / speed;
printf("It will take you %.2f to cover ", time);
}

最佳答案

因为两个操作数都是整数,所以编译器生成整数除法的代码。但你想要真正的 split 。因此,将一个或多个操作数转换为浮点类型,编译器将发出真正除法的代码。

time = (float) distance / time;

整数除法是你在小学学到的。例如,11/3 是 3 的余数 2。在 C 中,表达式 11/3 的计算结果为 3。这是整数除法。在您的情况下,分子(距离)似乎小于分母(时间),因此表达式

distance / time

计算为 0。

这是除法运算符重载引起的常见混淆。如果两个操作数都是整数,则此运算符表示整数除法,否则为实数除法。

要了解的关键点是,操作数的类型 决定是使用整数除法还是使用实数除法。存储结果的变量类型对此选择没有影响。

关于c - 时间 = C 中的距离与速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19623790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com