5

我为我的班级编写了一个练习程序,除了返回变量的值之外,其中的所有内容都可以正常工作。我的问题是,为什么它不返回值?这是我编写的示例代码,以避免复制和粘贴大部分不相关的代码。

#include <iostream>
using std::cout; using std::cin;
using std::endl; using std::fixed;

#include <iomanip>
using std::setw; using std::setprecision;

int testing();

int main()
{
    testing();

    return 0;

}

int testing() {
    int debtArray[] = {4,5,6,7,9,};
    int total = 0;

    for(int debt = 0; debt < 5; debt++) {
    total += debtArray[debt];
    }

    return total;
}
4

5 回答 5

9

实际上,该函数正在返回一个值。但是,main()选择忽略该返回值。

在您的 中尝试以下操作main()

int total = testing();
std::cout << "The total is " << total << std::endl;
于 2013-08-31T18:41:23.707 回答
5

该函数确实返回一个值。您没有在屏幕上显示返回的值,这就是为什么您认为它没有返回值

于 2013-08-31T18:53:31.740 回答
4

testing() 确实返回一个值,但该值不会在任何地方使用或保存。你是usingstd::cout、std::cin、std::endl 等,但你没有使用它们。我假设你想做的是 display total。一个程序看起来像:

#include <iostream>
using std::cout;
using std::endl;

int testing();

int main() {
    int totaldebt = testing();
    cout << totaldebt << endl;

    return 0;
}

int testing() {
    int debtArray[] = {4,5,6,7,9};
    int total = 0;

    for(int debt = 0; debt < 5; debt++) {
        total += debtArray[debt];
    }

    return total;
}

您的代码中发生的事情是(假设编译器没有以任何方式优化)内部main()testing()被调用,通过它的指令,然后程序继续运行。printf如果您从调用,也会发生同样的事情<cstdlib>printf应该返回它显示的字符数,但是如果您不将结果存储在任何地方,它只会显示文本并且程序继续。

我要问的是为什么你using比你实际使用的更多?或者这不是完整的代码?

于 2013-08-31T19:18:30.147 回答
3

Return不等于print。如果你想让函数返回的值显示到标准输出,你必须有一个方法来做到这一点。这是通过在 main 或函数本身中打印使用std::cout和运算符返回的值来完成的<<

于 2013-08-31T18:57:02.187 回答
2

您的代码是完美的,但它不采用函数返回的值testing() 试试这个,
这将保存您的testing()函数返回的数据

#include <iostream>
using std::cout; using std::cin;
using std::endl; using std::fixed;

#include <iomanip>
using std::setw; using std::setprecision;

int testing();

int main()
{
    int res = testing();
    cout<<"calling of testing() returned : \t"<<res<<"\n";
    return 0;

}

int testing() {
    int debtArray[] = {4,5,6,7,9,};
    int total = 0;

    for(int debt = 0; debt < 5; debt++) {
    total += debtArray[debt];
    }

    return total;
}
于 2013-08-31T18:45:41.730 回答