Может ли кто-нибудь подтвердить, верно ли это?
Java превратит long% int в значение long. Однако он никогда не может быть больше, чем модуль, поэтому всегда безопасно применять его к int.
long a =
int b =
int c = (int) (a % b); // cast is always safe.
Аналогично, a long% short всегда будет безопасным для добавления в short.
Если true, знает ли кто-нибудь, почему Java имеет более длинный тип для %, чем нужно?
Кроме того, есть аналогичный случай для long и int (если вы игнорируете расширение знака)