x (매개 변수) 난수를 생성하고 반복을 제거한 다음 배열에 저장된 값을 반환하는 함수가 있습니다.rand()는 srand() 호출이 하나 뿐이지 만 값을 반복합니다.
rand()를 사용하여 임의의 숫자를 호출합니다. 그러나 x 매개 변수를 5로 설정하여 함수를 호출하면 rand()가 계속 동일한 4 또는 5 숫자를 반환하므로 무한 루프가됩니다.
main()에서 srand()를 한 번만 호출했습니다.
int main(void){
srand(time(NULL));
erase = eraser(4);
}
int* eraser(int array_size)
{
array_size++;
int* remove_ids = malloc(sizeof(int*) * array_size);
int t, v;
int i;
for(i = 0; i < array_size; i++) {
t = 1+(rand() & 80);
v = 1+(rand() & 80);
printf("t=%d , v=%d\n", t, v);
remove_ids[i] = t;
if(i == 0){
remove_ids[i] = array_size;
}
else {
for(int c = 1; c < i; c++) {
if(remove_ids[c] == t) {
i--;
break;
}
}
}
}
return(remove_ids);
}
는 출력 : 내가 eraser(5)
를 호출하면
t=1 , v=1
t=81 , v=1
t=81 , v=65
t=65 , v=17
t=17 , v=65
t=17 , v=65
t=1 , v=65
나는 무한 루프에 박히면서.
흥미롭게도 프로그램의 다른 함수 인 rand()는 완벽하게 작동합니다.
'& 80'은 무엇이라고 생각하십니까? – tkausl
* facepalm * 고마워요! – CallMeTheMan
힌트 :'80 == 0x50 == binary 01010000' – iBug