程序返回错误的数字

时间:2019-02-14 19:11:54

标签: c

我在入门编码课程中,我无法弄清楚为什么该程序没有给我正确的答案,而是给了我一个看似随机的数字。

我尝试将其作为常量而不是scanf放置,但这仍然给我带来了问题

#include <stdio.h>

const int MIN_CONST = 7;

int ComputeMinutesLost(int userCigarettes) {
   int minLost;
   int MIN_CONST;

   minLost = userCigarettes * MIN_CONST;

   return minLost;
}
int main(void) {

   int userCigarettes;
   printf("How many cigarettes have you smoked?\n");
   scanf("%d", &userCigarettes);
   printf("You have lost %d minutes to cigarettes. ", ComputeMinutesLost);

   return 0;
}

它应该只说损失了多少分钟(香烟乘以7),但是它给出了一个看似随机的数字。

1 个答案:

答案 0 :(得分:3)

注意:您发布的代码可能应该用编译错误或警告标记您。你把它们打开了吗?

更改以下内容:

 printf("You have lost %d minutes to cigarettes. ", ComputeMinutesLost);

收件人:

 printf("You have lost %d minutes to cigarettes. ", ComputeMinutesLost(userCigarettes));
                                                                       ^------------^  // forgot to include argument

顺便说一下,您看到的数值是函数ComputeMinutesLost地址的整数表示。

此外,(感谢@unimportant的评论)

在以下代码部分中://阅读评论...

const int MIN_CONST = 7;  // one of these...

int ComputeMinutesLost(int userCigarettes) {
   int minLost;
   int MIN_CONST;        // is not necessary, and masks the other
                         // remove one or the other
                         // (as is, this one invokes undefined behavior.)