Нет перегрузки оператора по модулю, который принимает long
и int
, поэтому int
будет преобразован в long
для соответствия другому операнду.
Просмотр этогона более низком уровне в CPU нет отдельной инструкции для вычисления по модулю, это всего лишь один из результатов операции деления.Результатом операции является результат деления и напоминание.Оба имеют одинаковый размер, поэтому в результате деления должно быть long
, как и напоминание.
Поскольку напоминание должно быть меньше делителя, вы можете безопасно привести результат кint
когда делитель происходит от int
.