返回值出错

时间:2013-12-07 11:58:47

标签: c++

所以我正在创建一个随机数生成器,我一直遇到问题。在我的程序中,我将代码打印到“int main()”函数中。问题是它之后打印了0。它也说我必须使用回归,但我不想。我想将随机数生成器保留在另一个函数中,因为我将来会添加更多。

#include<iostream>
#include<cstdlib>
#include<ctime>

using namespace std;

int randRoll();

//Calls the other function
int main()
{
    cout << randRoll() << endl;

    system("Pause");
}

//Gets the random number
int randRoll()
{
    srand(time(0));

    for (int x = 1; x <= 1; x ++)
    {
        cout <<"Your random number is " << 1 +(rand()%4) << endl;
    }

    return 0;
}

4 个答案:

答案 0 :(得分:1)

请改为尝试:

#include<iostream>
#include<cstdlib>
#include<ctime>

using namespace std;

int randRoll();

// entry point
int main()
{
    srand(time(0));     // initialize randomizer

    cout << randRoll() << endl;

    system("Pause");

    return 0;
}

//Gets the random number
int randRoll()
{
    auto x = 1 +(rand()%4);

    // do something with x here (but don't call cout!)

    return static_cast<int>(x);
}

您遇到的问题是您没有返回随机生成的值(我在代码中调用x)。此外,您试图打印出随机生成的值两次(但不正确)。

答案 1 :(得分:1)

#include<iostream>
#include<stdlib.h>
#include<time.h>

using namespace std;

//Gets the random number
int randRoll()
{
    return 1 +(rand()%4);
}

//Calls the other function
int main()
{
    srand( static_cast<unsigned>( time(0) ) );

    for (int x = 1; x <= 7; x ++)
    {
        cout <<"Your random number is " << randRoll() << endl;
    }
}

突出点:

  • 优选使用例如<stdlib.h>,而不是<cstdlib>,以避免一些问题。
  • 最好避免功能的前向声明(也避免一些问题)。
  • 只打电话srand一次。

答案 2 :(得分:0)

cout << randRoll() << endl;

打印出该函数的返回值,即0,当你告诉它打印时怎么办?好吧,就像这样,不要求它打印返回值:

randRoll(); // prints some random numbers
cout << endl; // prints newline

然后忽略返回值,如果需要,可以将其更改为void类型。

请注意,作为一个整体,这样做可能没有意义,但我认为这可以回答你的问题并允许你继续下一个问题......

答案 3 :(得分:0)

嗯,当然它打印了两个数字,你问过它!

// This prints "Your random number is [1-4]\n"
cout <<"Your random number is " << 1 +(rand()%4) << endl;

// This prints "0\n" since "randRoll()" returns 0
cout << randRoll() << endl;

您的主要功能可能只是int main() { randRoll(); },因为randRoll已经打印了一些内容。