C - Visual Studio 2017 SRAND() 崩溃(在线编译器工作)



我尝试了这3种类型的代码。

1:Visual Studio 2017 输出:应用程序崩溃。

time_t = t;
srand((unsigned)time(&t)); 

2:Visual Studio 2017 输出:应用程序崩溃。

srand (time(NULL));

3:Visual Studio 2017输出:正常打印后崩溃。

long t;
time(&t);
srand((unsigned)t);

第三个变体输出/错误和构建警告打印: 调试错误! 运行时检查失败 #2 - 变量"t"周围的堆栈已损坏

警告 C4333:"函数":不兼容的类型 - 从"长 *"到"time_t*const" (尝试使用time_t修复,但应用程序只是崩溃(

所有示例都适用于在线编译器!! onlinegdb.com。 所有测试都是用下面的代码完成的。

#define _CRT_SECURE_NO_WARNINGS
#define CON 10
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

float maxB(float v[], int n);
float maxB(float v[], int n) {
float est;
for (int i = 0; i < n-1; i++)
{
printf("[%d]: %.2fn", i, v[i]);
if (v[i] >= v[i + 1]) {
est = v[i];
}
else
{
est = v[i + 1];
}
}
return est;
}
main() {
srand(time(NULL));
float v[CON];
int a;
printf("how many vector positions to test?n");
scanf("%d", &a);
while (a < 0 || a > CON ){
printf("invalid input!how many vector positions to test?n");
scanf("%d", &a);
}
for (int i = 0; i < CON; i++){
v[i] = (float)(rand() % 10);
}
printf("Biggest number %f", maxB(v, a));
} 

那么......我应该怎么做才能在Visual Studio中使用随机函数?我应该使用其他版本吗?

解决了,问题是我正在使用的计算机,当我用另一台机器进行测试时,它工作了!

最新更新