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