[英]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
。 這就是定義這些功能的地方。
您收到此警告是因為尚未定義函數rand
和srand
。
從手冊頁:
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.