Я объяснил оба случая ... второй дает вам деление на ноль в показанных помещениях ... вы меня опровергли? Вот почему вы получаете деление на ноль ..... :) понизить меня ... но ответ был там ....

я есть назначение на расширение некоторыхпо-видимому странное поведение кода C (работает на x86). Я могу легко закончить все остальное, но этот действительно смутил меня.

Выводы кода 1-2147483648

int a = 0x80000000;
int b = a / -1;
printf("%d\n", b);

Фрагмент кода 2 ничего не выводит и выдаетFloating point exception

int a = 0x80000000;
int b = -1;
int c = a / b;
printf("%d\n", c);

Я хорошо знаю причину результата Code Snippet 1 (1 + ~INT_MIN == INT_MIN), но я не совсем понимаю, как целочисленное деление на -1 может генерировать FPE, и при этом я не могу воспроизвести его на своем телефоне Android (AArch64, GCC 7.2.0). Код 2 просто выводит то же, что и Код 1, без каких-либо исключений. Это скрытыйошибка особенность процессора x86?

Назначение ничего не сказало (включая архитектуру процессора), но, поскольку весь курс основан на настольном дистрибутиве Linux, можно смело предположить, что это современный x86.

редактироватьЯ связался с моим другом, и он протестировал код на Ubuntu 16.04 (Intel Kaby Lake, GCC 6.3.0). Результат соответствовал тому, что указано в назначении (код 1 выдает указанную вещь, а код 2 аварийно завершает работу с FPE).

Ответы на вопрос(5)

Ваш ответ на вопрос