生成随机数0-1,当我输入的输入数小于4时,代码工作正常。但是当输入数字超过4时,eclipse就会停止工作。我的代码有什么问题
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
double ran(double x0, double x1){
return x0+(x1-x0)*rand()/((double)RAND_MAX);
}
int main(void) {
int a,i;
double *b;
printf("input the size\n");
scanf("%d", &a);
b=(double*)malloc(sizeof(int)*a);
srand((unsigned)time(NULL));
for(i=0;i<a;i++)
{
b[i]=ran(0,1);
printf("\n %f", b[i]);
}
free (b);
return 1;
}
答案 0 :(得分:1)
double大于整数。 double是8个字节,而整数是4个字节。 你应该替换
b = (double*)malloc(sizeof(int)*a);
与
b = (double*)malloc(sizeof(double)*a);
甚至更好(感谢Lưu Vĩnh Phúc)
b = malloc(a * sizeof b[0]);