Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-在一定的天数内有多少小时?_C_Days - Fatal编程技术网

C-在一定的天数内有多少小时?

C-在一定的天数内有多少小时?,c,days,C,Days,我正在学习C语言,我正在写一个简单的程序,你可以输入天数,它会告诉你这几天有多少小时。例如,输入2天,它表示有48小时。没有错误,但最终结果并不好。 这是我的代码和结果 代码: 下面是控制台中的结果 Find out how many hours are in days. Enter number of days. Days = 1 1 days has 677268864 hours. 一旦知道一天,你需要计算小时数。如果你明白我的意思的话,你不能用C语言安排这样的评估。有趣的是,你可以在C

我正在学习C语言,我正在写一个简单的程序,你可以输入天数,它会告诉你这几天有多少小时。例如,输入2天,它表示有48小时。没有错误,但最终结果并不好。 这是我的代码和结果 代码:

下面是控制台中的结果

Find out how many hours are in days.
Enter number of days. Days = 1
1 days has 677268864 hours.
一旦知道一天,你需要计算小时数。如果你明白我的意思的话,你不能用C语言安排这样的评估。有趣的是,你可以在C++中使用演员。

当前正在读取未初始化的变量。这样做的行为是未定义的

int day, hour;
hour= 24 * day;
上面将小时设置为天乘以24的当前不确定值。这并不意味着每一天的变化小时都会自动更新


从用户处获得日值后,将此分配移动到。

想想你在做什么:

int day, hour;
天和小时都未初始化

然后你马上计算小时!但这一天没有任何有意义的价值

事实上

scanf("%d", &day);
…你在计算后的第二天填写


在计算之前移动scanf,以便在执行乘法时初始化该天-您的代码将正常工作。

为什么这样做:

hour= 24 * day;
在用户输入之前

这就是原因,您正在使用未初始化变量在输入之前计算答案,并保存一些不可预测的垃圾

一定是这样的

int day = 0;
int hour = 0;

printf("Find out how many hours are in days.\n");
printf("Enter number of days. Days = ");
scanf("%d", &day);
hour= 24 * day;
printf("%d days has %d hours.\n", day, hour);
return (EXIT_SUCCESS);

可变日期尚未填写;它可能包含垃圾数据。要解决此问题,请将int hours=day*24移到扫描%d之后,&day;,通过这种方式,可变日期将实际扫描该值

为什么要投否决票?这里有代码,并记录了实际的和预期的行为。@Bathsheba-我没有投反对票,但是一些用户觉得这些问题让人感觉很好,duh!不应该在这里。但是有些语言确实允许这样做,而且问题写得很好。@Bathsheba-耸耸肩我想这只是感觉这样的问题必须有一个副本,但是说副本总是如此难以捉摸,这让人们对这个问题感到不满。我通常倾向于乔尔·斯波尔斯基的哲学,即任何问题都有一个位置,至少有一次。但从某种意义上说,让人们自己去寻找答案确实是更好的教学方法。这个问题写得很好,有一个代码示例,其中包含一个到OP的非明显错误。它清楚地说明了行为,因此我对这个问题投了赞成票。我的投票结果是“你应该先阅读值,然后再使用它,而不是相反”,因为我现在在谷歌上搜索了actor框架实现,并获得了一些阅读材料。看看boost spirit和boost Phoenix吧!行。我希望你的猫很好,这几天所有的UB都这么做了!他们回来后,有人写了表达式c/c++不知道我不应该这样做之前,用户输入。我只是认为它会定义小时,并自动地计算出来。@ BRS听起来就像你是一个C++程序员。
hour= 24 * day;
int day = 0;
int hour = 0;

printf("Find out how many hours are in days.\n");
printf("Enter number of days. Days = ");
scanf("%d", &day);
hour= 24 * day;
printf("%d days has %d hours.\n", day, hour);
return (EXIT_SUCCESS);