为什么srand()没有存储在我的变量中?

时间:2016-08-15 03:57:10

标签: c++ variables random srand

我想要制作的这个初学者程序基本上是一个程序,其中生成一个真正随机的数字和#34;播放器"不得不猜数字。电脑会响应太高"或者"太低"直到玩家猜到正确的号码。

我从某个网站获得了这个程序的想法,并认为我应该随意使用它。这是我的第二个程序 - 我的第一个程序是一个简单的I / O程序。

这是我的代码:

// BracketingSearch.cpp

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <string>
#include <ctime>
#include <istream>
#include <fstream>
using namespace std;

int main() 
{

int x = srand(time(0));
cout << x << endl;
for (int x = 1; x <= 10; x++) {
    cout << 1 + (rand() % 100) << endl;
}
string stall;
getline(cin, stall);
}

附注: 我不认为我需要那么多标题;我仍然习惯使用c ++库。 请尽可能批评我的代码。我渴望学习编程! string stall只是让我的控制台应用程序暂停输入,所以我可以看到结果。

感谢所有可以提供帮助的人! -Mike

2 个答案:

答案 0 :(得分:4)

srand(time(0))播种rand()生成的随机数。其返回类型为void。 void type不能存储在整数类型变量中。

有关srand()的详细信息,请参阅here

答案 1 :(得分:0)

我重写了程序以使用所需的最少标头。因为我认为这是作业,所以我保留了原始错误,但是在这里放置了gcc的错误输出。

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

// this is a personal thing, but I avoid "using namespace std;"
// in any file, since it makes it less clear where some symbols
// came from

int main() 
{
    int x = std::srand(std::time(0)); // line 11
    std::cout << x << std::endl;
    for (int x = 1; x <= 10; x++) {
        std::cout << 1 + (std::rand() % 100) << std::endl;
    }

    // Windows folklore -- you should better switch your ide to not close
    // the terminal after the program was run
    std::cin.get();
}

g++ -Wall foo.cpp的输出:

foo.cpp: In function 'int main()':
foo.cpp:11:40: error: void value not ignored as it ought to be
         int x = std::srand(std::time(0));
                                        ^