Я не сомневаюсь в необходимости проверки деления на ноль. Я никогда не слышал о проверке деления на отрицательный, хотя!Ошибка выполнения во время деления на -1
if(*y == 0)
return 0; //undefined
else
return *x/*y;
x, y
являются указателями на int32_t
, я включаю эту деталь в случае релевантности.
Во время выполнения, если *x==0x80000000, *y==0xffffffff
, я получаю сообщение об ошибке (в Xcode):
EXC_ARITHMETIC (код = EXC_I386_DIV, субкодовое = 0x0)
Все, что я могу найти в Интернете является Предложения, является делением на ноль, но, как вы можете видеть из вышеприведенного теста, и я вижу из окна отладки, это не так.
Что означает ошибка, и как я могу ее исправить?
Если 'y == 0xffffffff', то это вряд ли допустимый указатель на int32_t, как вы утверждаете. –
@Paul Спасибо - typo, я имел в виду '* y' – OJFord
См. [Почему unsigned int 0xffffffff равно int -1] (http://stackoverflow.com/questions/1863153/why-unsigned-int-0xffffffff-is- equ-to-int-1) для обсуждения представления чисел и того, как на разных машинных архитектурах есть некоторые числа, такие как нуль и отрицательный, представление которых может варьироваться. –