Нет, я считаю, что это определено реализацией. Из проекта стандарта C ++, §4.7 / 3
Если тип назначения подписан,
значение не изменяется, если оно может быть
представлены в типе назначения
(и ширина поля битов); в противном случае
значение определяется реализацией.
Это относится к первому утверждению. int16_t
подписано и не может представлять 50000. Таким образом, значение t1
зависит от реализации.
Как только вы знаете, t1
, § 1012 * гарантируется согласно § 4.7 / 2 как самый низкий uint16_t
конгруэнтный модуль от 2 ^ 16 до t1
В основном, t1
мод 2 ^ 16.