Если я наберу:
int main() { return 0 % 0; }
Я получаю обратно ошибку:
error C2124: divide or mod by zero
В чем причина этого? Разве ответ не ноль?
В математике x mod 0
не определено, следовательно ошибка.
Из стандарта C ++, раздел 5.5:
Если во время вычисления выражения результат не определен математически или не находится в диапазоне представляемых математических значений для его типа, поведение не определено. […] Обработка деления на ноль, формирования остатка с использованием делителя на ноль и всех исключений с плавающей запятой варьируется в зависимости от машины и обычно настраивается библиотечной функцией.
Поскольку остаток от деления на ноль математически не определен независимо от делимого числа, ответ не определен в соответствии со стандартом C ++.
Функция мода по сути такая же, как и функция целочисленного деления, за исключением того, что она дает вам остаток, а не частное. Вы не можете разделить на ноль …
(Кстати, 0/0 — это даже не бесконечность, а неопределенность.)