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