Поведение зависит от языка.
В C и C ++ переполнение со знаком не определено, а переполнение без знака имеет указанное вами поведение (хотя нет типа byte
).
В C # вы можете использовать ключевое слово checked
, чтобы явно сказать, что вы хотите получить исключение, если есть переполнение, и ключевое слово unchecked
, чтобы явно сказать, что вы хотите его игнорировать.