返回不返回变量值

时间:2013-08-31 18:39:31

标签: c++ return

我为我的课写了一个练习程序,除了返回变量的值之外,其中的所有内容都有效。我的问题是,为什么它没有返回价值?下面是我写的示例代码,以避免复制和粘贴大部分不相关的代码。

#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;
}

5 个答案:

答案 0 :(得分:9)

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

main()中尝试以下内容:

int total = testing();
std::cout << "The total is " << total << std::endl;

答案 1 :(得分:5)

该函数确实返回一个值。 您没有在屏幕上显示返回的值,因此您认为它不会返回值

答案 2 :(得分:4)

testing() 会返回一个值,但该值不会在任何地方使用或保存。您是using std :: cout,std :: cin,std :: endl等,但您不是使用它们。我假设您要做的是显示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比实际使用更多?或者这不是完整的代码吗?

答案 3 :(得分:3)

Return不等同于print。如果您希望函数返回的值显示为stdout,则必须有一个方法。这是通过在main或函数本身中打印使用std::cout<<运算符返回的值来完成的

答案 4 :(得分: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;
}