Как вызвать преднамеренное деление на ноль?

По причинам тестирования я хотел бы вызвать деление на ноль в моем коде на С++. Я написал этот код:

int x = 9;
cout << "int x=" << x;
int y = 10/(x-9);
y += 10;

Я вижу на экране "int = 9", но приложение не сбой. Это из-за некоторых оптимизаций компилятора (я компилирую с gcc)? В чем может быть причина?

Ответ 1

Сделайте переменные volatile. Читает и записывает изменчивые переменные считаются наблюдаемыми:

volatile x = 1;
volatile y = 0;
volatile z = x / y;

Ответ 2

Потому что y не используется, его оптимизируют.
Попробуйте добавить cout << y в конец.

В качестве альтернативы вы можете отключить оптимизацию:

gcc -O0 file.cpp

Ответ 3

Деление на ноль - это поведение undefined. Не сбой также является довольно хорошим подмножеством потенциально бесконечного числа возможных поведений в области поведения undefined.

Ответ 4

Как правило, деление на ноль генерирует исключение. Если он не обрабатывается, он сломает программу, но она не сработает.