c4014在C中使用rand()时

时间:2015-10-13 18:37:30

标签: c random warnings srand

我试图让我的程序使用C中的rand()函数返回一个随机数[-5,5]。该程序正在运行,但我不喜欢每次编译代码时都给出2个警告的事实。 这是代码:

#include <time.h>
#include<stdio.h>
int main(int argc, char *argv[]){

    int randomNumber = 0;
    for (int index = 1; index < argc; index++) {
        printf("The %d is %s\n", index, argv[index]);
    }
    getchar();

    srand(time(NULL));
    randomNumber = (rand()%11)-5;
    return randomNumber;

}

这些是警告:

warning C4013: 'srand' undefined; assuming extern returning int
warning C4013: 'rand' undefined; assuming extern returning int

为什么会出现这些警告?我担心以后可能会引起一些问题,所以我想消除这些警告。

编辑:

添加了另一个库:

#include <stdlib.h>

2个警告消失,1个新警告:

warning C4244: 'function' : conversion from 'time_t' to 'unsigned int', possible loss of data

通过更改srand调用解决了新的警告:

srand((unsigned int)time(NULL));

这是最终解决的计划:

#include <time.h>
#include<stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){

    int randomNumber = 0;
    for (int index = 1; index < argc; index++) {
        printf("The %d is %s\n", index, argv[index]);
    }
    getchar();


    srand((unsigned int)time(NULL));
    randomNumber = (rand()%11)-5;
    return randomNumber;
}

已解决,逐步显示编辑内容以供将来引用其他用户。 感谢

2 个答案:

答案 0 :(得分:1)

您需要加入([^0]|$)。这就是定义这些功能的地方。

答案 1 :(得分:0)

您收到此警告是因为randsrand函数尚未定义。

从手册页:

  

NAME          rand,rand_r,srand - 伪随机数生成器

     

概要

   #include <stdlib.h>

   int rand(void);

   int rand_r(unsigned int *seedp);

   void srand(unsigned int seed);

通过包含stdlib.h,您可以获得这些函数的原型,编译器可以确保您正确地调用它们。