visual studio 2017 srand() 崩溃(在线编译器工作)
visual studio 2017 srand() crashes (online compiler works)
这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);
第三个变体 output/error 和构建警告打印:
调试错误!
运行-TimeCheck 失败 #2 - 变量 't' 周围的堆栈已损坏
警告 C4333:'function':不兼容的类型 - 从 'long *' 到 '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]: %.2f\n", 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 的随机函数?我应该使用另一个版本吗?
已解决,问题出在我使用的电脑上,当我用另一台机器测试时,它成功了!
这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);
第三个变体 output/error 和构建警告打印: 调试错误! 运行-TimeCheck 失败 #2 - 变量 't' 周围的堆栈已损坏
警告 C4333:'function':不兼容的类型 - 从 'long *' 到 '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]: %.2f\n", 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 的随机函数?我应该使用另一个版本吗?
已解决,问题出在我使用的电脑上,当我用另一台机器测试时,它成功了!