我在入门编码课程中,我无法弄清楚为什么该程序没有给我正确的答案,而是给了我一个看似随机的数字。
我尝试将其作为常量而不是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),但是它给出了一个看似随机的数字。
答案 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.)