gpt4 book ai didi

c - double 与 int 相乘时变为 0

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

我试图以秒为单位存储用户输入,而输入以分钟为单位。如果我输入 0.1,这应该是 6 秒,因为 0.1 分钟是 6 秒。

但是,出于某种原因,我的代码结果为零。

int main(int argc, char *argv[]) {
if (argc != 6) {
printf("Not enough arguments!\n");
exit(1);
}

double sim_time, chance, time_served, sample_time;
int num_tellers;


sim_time = atoi(argv[1]) * 60; //These are in minute units
chance = atoi(argv[2]);
num_tellers = atoi(argv[3]);
time_served = atoi(argv[4]) * 60;
sample_time = atoi(argv[5]) * 60;

这里是命令行输入:./a.out 10 2 3 4 0.1

因此我预计 sample_time 是 6,但它是 0。这可能是一些非常愚蠢的东西,但我想不通。

感谢任何帮助。

最佳答案

atoi()的签名是

 int atoi(const char *nptr);

它将返回一个int 值,而不是floatdouble。在您的例子中,输入 0.1 返回为 0

如果你想要一个float 值,试试atof() .

注意:作为建议,最好在直接使用 argv[n] 之前检查 NULL

关于c - double 与 int 相乘时变为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27309923/

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