【发布时间】:2015-10-13 18:37:29
【问题描述】:
我正在尝试使用 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;
}
已解决,逐步显示编辑内容以供其他用户参考。 谢谢
【问题讨论】:
-
你忘了
#include <stdlib.h> -
#include <stdlib.h>或 ``#include` 怎么样? -
包括在内,之前的2个不见了,现在又多了一个:
warning C4244: 'function' : conversion from 'time_t' to 'unsigned int', possible loss of data -
return randomNumber;frommain好像不是个好主意,看看What should main() return in C and C++? -
@AlterMann 我的程序应该运行另一个程序,该程序将根据错误类型返回不同的数字。这段代码只是为了模拟我应该在未来运行的程序的错误发生(没有完成),这就是为什么一个随机数。