2012-09-29 5 views
0

화면에 임의의 위치에 개체를 넣으려고합니다.iOS - 임의 번호 생성시 알 수없는 버그?

arc4random()을 사용하여 새로운 난수를 생성합니다.

그러나 함수가 여기에, 제대로 작동 코드 및 추적 결과입니다없는 것 같다 :

Code : 

UIView *stateView = [[UIView alloc] initWithFrame:CGRectMake((arc4random()%700)-100 , (20 * 91) + 378 + ((arc4random()%600)+200), 325 , 188)]; 

NSLog(@"Note %d : X = %f , Y = %f",i,stateView.frame.origin.x,stateView.frame.origin.y); 


********************** 


NSLog Output : 

Note 5 : X = 4294967040.000000 , Y = 2552.000000 

이 버그인가, 아니면 내가 발전기로 잘못된 일을 해요?

답변

0

documentation for arc4random()에 따르면 반환 유형은 부호가없는 유형 인 u_int32_t입니다. 감산을 포함하는 발현

(arc4random()%700)-100 

계산에서는 부호 산술을 사용하여 수행된다. 부호없는 산술 오버플로가 발생합니다. 뺄셈을하기 전에 서명 된 정수 형식으로 캐스팅이를 해결하려면 :

((int) (arc4random() % 700)) - 100 

이 결과는이 도울 수 599

+0

희망을 통해 -100에서 정수가됩니다 ... –