使用具有返回能力的函数

时间:2018-04-21 21:01:37

标签: c++

不确定为什么这不起作用。我没有非常多地使用返回但是想知道为什么它返回零。

using namespace std;
void randgen(int &y);
int doub(int y);

int main()
{
int y, num;

randgen(y);
cout<<num<<endl;
}

void randgen(int y)
{
unsigned seed = time(0);
srand(seed);

y = (rand() % (99-10+1))+10;
num = y;
return num;

}

2 个答案:

答案 0 :(得分:0)

在main中,声明一个名为num的变量,它是main函数的本地变量。你永远不会将它作为参数传递给randgen函数。但是,您可以在主函数中打印它。当您在main函数中打印num时,它不会从randgen函数打印num变量,而是从main函数打印num变量。事实上,你真的不需要num。你可以从randgen函数返回y。在使用cout之前还应该将对randgen的调用设置为变量,或者只使用cout&lt;&lt; randgen(y)&lt;&lt; ENDL;

如果您从randgen函数返回一个值,则需要将其从void更改为返回的任何数据类型。你也不能在randgen中使用num,因为它没有被声明。您必须先声明变量才能使用它。

希望这有帮助!

答案 1 :(得分:-1)

num永远不会在main()中分配任何值。而不只是randgen(y);您需要num = randgen( y );

randgen()被声明为void - 如果你想返回一些东西(在这种情况下是一个随机整数),你需要声明它。

在为y分配任何值之前,您已将randgen()作为参数传递给y。所以你需要为它分配一些东西。 (另一个问题是你永远不会在randgen()本身使用y值,所以为什么要先把它传递给... {/ p>

没有必要将生成的值分配给num然后num然后返回(除了#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int randgen(int y); int main() { int y, num; y = 5; num = randgen(y); cout<<num<<endl; } int randgen(int y) { unsigned seed = time(0); srand(seed); return (rand() % 90)+10; } 之外没有在函数中声明)你可以只返回生成的值

这些可能是主要问题。尽管如此,这里的代码版本可以正常工作,并且可以满足您的需求。

{{#each payload as |p|}} {{#if_greater 20 occurrences}}
  <tr class="danger">
    <td>{{p.date}}</td>
    <td>{{p.serial}}</td>
    <td>{{p.operator}}</td>
    <td>{{p.vehicle}}</td>
    <td>{{p.stop}}</td>
    <td>{{p.line}}</td>
    <td>{{p.zone}}</td>
    <td>{{p.occurrences}}</td>
    <td>{{p.encrypted}}</td>
  </tr>