История изменений
Исправление hateyoufeel, (текущая версия) :
Он так и делает. В виду того, что это приводит к разным ошибкам на уровне процессора (или библиотеки длинной арифметики, если разрядность процессора меньше типа), то в общем виде поведение программы, которая попытается делить на 0 — не определено. Что не так?
Не так то, что ты не понимаешь, что такое undefined behaviour в C. Undefined behaviour относится к поведению компилятора. В данном случае, если в коде есть деление на 0 без проверки, то компилятор может выдать любое говно. Например:
int a, b;
scanf("%d %d\n", &a, &b);
int c = a / b;
if(b == 0) {
puts("OOOOPS!");
}
В данном случае, блок if будет выкинут, потому что компилятор считает, что b не может быть 0.
Собери программу с санитайзером (для gcc и clang -fsanitize=undefined,address). В бинарник будет вшита библиотека, которая остановить программу в случае UB и напишет где и когда оно произошло.
Повторюсь, ты не понимаешь, что такое undefined behaviour в C. Впрочем, мы уже выяснили выше, что ты и программировать-то не умеешь.
UBSan работает далеко не всегда. Это раз. Два, для его срабатывания нужно воспроизвести все условия в коде, что может быть сложнее чем кажется. А всё потому что каким-то кретинам почти 50 лет назад сложно было язычок спроектировать.
Исходная версия hateyoufeel, :
Он так и делает. В виду того, что это приводит к разным ошибкам на уровне процессора (или библиотеки длинной арифметики, если разрядность процессора меньше типа), то в общем виде поведение программы, которая попытается делить на 0 — не определено. Что не так?
Не так то, что ты не понимаешь, что такое undefined behaviour в C. Undefined behaviour относится к поведению компилятора. В данном случае, если в коде есть деление на 0 без проверки, то компилятор может выдать любое говно. Например:
int a, b;
scanf("%d%d\n", &a, &b);
int c = a / b;
if(b == 0) {
puts("OOOOPS!");
}
В данном случае, блок if будет выкинут, потому что компилятор считает, что b не может быть 0.
Собери программу с санитайзером (для gcc и clang -fsanitize=undefined,address). В бинарник будет вшита библиотека, которая остановить программу в случае UB и напишет где и когда оно произошло.
Повторюсь, ты не понимаешь, что такое undefined behaviour в C. Впрочем, мы уже выяснили выше, что ты и программировать-то не умеешь.
UBSan работает далеко не всегда. Это раз. Два, для его срабатывания нужно воспроизвести все условия в коде, что может быть сложнее чем кажется. А всё потому что каким-то кретинам почти 50 лет назад сложно было язычок спроектировать.