根据
gdb公司
该行导致分段错误
((double) rand()/(double) (RAND_MAX)) * (r*2)
但这很好
((float) rand()/(float) (RAND_MAX)) * (r*2)
我可以用花车凑合,但这让我很烦。我做错什么了还是
rand()
不能应付双打。
请注意,在上例的上下文中
float
已更改为
double
。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct cord {
/* float or double */
float x;
float y;
};
int main() {
float r = 3.0;
int amount = 1000000;
struct cord cords[amount];
srand(time(NULL));
for (int i = 0; i < amount; i++) {
cords[i] = (struct cord) {
/* Segfault occurs when (float) is replaced with (double) */
((float) rand()/(float) (RAND_MAX)) * (r*2),
((float) rand()/(float) (RAND_MAX)) * (r*2)
};
}
}