为什么这个函数代码不起作用

Why is this function code not working?

本文关键字:代码 不起作用 函数 为什么      更新时间:2023-10-16

我现在正在努力学习C++和我的函数。这个代码应该将英尺转换为米。这是我的一些代码:

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <iomanip>
using namespace std;
void instructions(void);
double feetToMeters(double);
int main(int nNumberofArgs, char* pszArgs[])
{
    instructions();
    feetToMeters(double);
    system("PAUSE");
    return 0;
}
void instructions(void)
{
    cout << "enter a number of feet to convert to meters: ";
    return;
}
double feetToMeters(double feet)
{
    cin >> feet;
    double meters = feet * 3.28084;
    cout << "That is " << meters << " meters";
    return meters;
}

并且我得到"在'double'之前预期的主表达式"。如何使其正确运行?

"为什么这个函数代码不工作?"问题的技术答案是您的代码行

feetToMeters(double);

正在尝试调用参数为double的函数(feetToMeters)。但是,double不是C++中的一个值。这是一个保留字,代表一种类型。如果你想让函数进行计算,你必须给它传递一个合法的值。

您的代码需要重新组织一下。您似乎想编写一个函数来根据发送的参数进行转换,但在函数内部,您读取了要从cin转换的值。你不能两全其美。正确的方法是在main中进行读取,然后将读取的值传递给函数。则main变为:

int main(int nNumberofArgs, char* pszArgs[]) {
    double feet;
    instructions();
    cin >> feet;
    feetToMeters(feet);
    system("PAUSE");
    return 0;
}

接下来,从feetToMeters函数中删除在feet中读取的行(因为它现在在main中),留下:

double feetToMeters(double feet) {
    double meters = feet * 3.28084;
    cout << "That is " << meters << " meters";
    return meters;
}

因为你以前已经读过了。

顺便说一句,我也会把输出线(cout << ...)放在main里面。这样,函数只进行转换,main处理所有用户交互(输入和输出)。

您必须将一些参数而不是'double'传递给feetToMeters:

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <iomanip>
using namespace std;
void instructions(void);
double feetToMeters(double);
int main(int nNumberofArgs, char* pszArgs[])
{
    instructions();
    // get the feet value
    cin >> feet;
    // pass the parameter
    feetToMeters(feet);
    system("PAUSE");
    return 0;
}
void instructions(void)
{
    cout << "enter a number of feet to convert to meters: ";
    return;
}
double feetToMeters(double feet)
{
    double meters = feet * 3.28084;
    cout << "That is " << meters << " meters";
    return meters;
}

或定义不带任何参数的feetToMeters函数:

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <iomanip>
using namespace std;
void instructions(void);
double feetToMeters(void);
int main(int nNumberofArgs, char* pszArgs[])
{
    instructions();

    // call function without parameter
    feetToMeters();
    system("PAUSE");
    return 0;
}
void instructions(void)
{
    cout << "enter a number of feet to convert to meters: ";
    return;
}
double feetToMeters(void)
{
    double feet;
    cin >> feet;
    double meters = feet * 3.28084;
    cout << "That is " << meters << " meters";
    return meters;
}