簡體   English   中英

在C中使用rand()時為c4014

[英]c4014 when using rand() in C

我正在嘗試使用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;
}

已解決,逐步顯示了編輯內容,以供將來其他用戶參考。 謝謝

您需要包括stdlib.h 這就是定義這些功能的地方。

您收到此警告是因為尚未定義函數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,您可以獲得這些函數的原型,並且編譯器可以確保正確調用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM