0으로 나누기를 확인해야 할 필요는 없습니다. 나는 부정적인 것에 의한 분열을 점검하는 것을 들어 본 적이 없다!런타임 오류를 -1로 나누기
if(*y == 0)
return 0; //undefined
else
return *x/*y;
x, y
나는 관련성의 경우에이 내용을 포함, int32_t
에 대한 포인터입니다. 런타임시
*x==0x80000000, *y==0xffffffff
경우, 나는 (엑스 코드에서) 오류를 얻을 :
EXC_ARITHMETIC (코드 = EXC_I386_DIV, 서브 코드 = 0x0으로)
모든 I 온라인으로 찾을 수 있습니다 제안이 그 제로에 의한 나눗셈이지만 위의 검사에서 볼 수 있듯이 디버그 창에서 볼 수 있습니다. 여기서는 그렇지 않습니다.
무엇이 오류의 의미이며, 어떻게 해결할 수 있습니까?
'y == 0xffffffff' 인 경우, 주장하는대로 int32_t에 대한 유효한 포인터가 아닌 것 같습니다. –
@ Paul 감사합니다 - 오타, 뜻은'* y'입니다 – OJFord
[이유는 unsigned int 0xffffffff은 int -1과 같습니다] (http://stackoverflow.com/questions/1863153/why-unsigned-int-0xffffffff-is- 1과 같음)을 사용하여 숫자 표현에 대해 설명하고 다른 기계 아키텍처에서 표현이 다를 수있는 0과 음수와 같은 숫자가있는 방법에 대해 설명합니다. –